2016-10-19 3 views
1

У меня есть модель glm, для которой я использую coeftest из пакета lmtest для оценки надежных стандартных ошибок. Когда я использую stargazer для создания регрессионных таблиц, я получаю правильные результаты, но без количества наблюдений и других соответствующих статистических данных, таких как нулевое отклонение и отклонение модели.Добавление статистики к выходу coeftest для включения в таблицы stargazer

Вот пример:

library(lmtest) 
library(stargazer) 

m1 <- glm(am ~ mpg + cyl + disp, mtcars, family = binomial) 
# Simple binomial regression 

# For whatever reason, let's say I want to use coeftest to estimate something 
m <- coeftest(m1) 

stargazer(m, type = "text", single.row = T) # This is fine, but I want to also include the number of observations 
              # the null deviance and the model deviance. 

Я специально заинтересован в ряде наблюдений, нулевой девиантности и остаточной девиации.

Я думал, что если бы я заменил старую матрицу коэффициентов на новую, я бы получил правильные оценки с правильной статистикой, и звездчалец узнал бы модель и напечатал ее правильно. Для этого я попытался подставить коэффициенты, статистические данные SE, z и значения p из модели coeftest в модели m1, но некоторые из этих статистических данных вычисляются с помощью summary.glm и не включены в выход m1. Я мог бы легко заменить эти коэффициенты на вывод summary, но stargazer не распознает класс сводного типа. Я пробовал добавлять атрибуты к объекту m со специфической статистикой, но они не отображаются в выходном файле, и stargazer не распознает его.

Примечание: Я знаю, что stargazer может вычислять надежные SE, но я также занимаюсь другими вычислениями, поэтому в этом примере должен быть указан вывод coeftest.

Любая помощь приветствуется.

+1

вы против делать это вручную USIN g опция 'add.lines'? Затем вы можете использовать объект coeftest и добавить другие параметры из объекта lm: 'stargazer (m, type =" text ", single.row = T, add.lines = list (c (" Наблюдения ", длина (m1 $) data [, 1])), c («Null Deviance», round (m1 $ null.deviance, 3)))) ' – paqmo

+0

Спасибо @paqmo, но в моем реальном примере это слишком громоздко. Я фактически ввожу списки с N моделями внутри списка. Это было бы слишком много ручной работы для 5-6 моделей. – cimentadaj

ответ

0

Если я вас правильно, вы можете попробовать следующее:

Во-первых, назначить свой анализ Звездочет на объект, как этот

stargazer.values <- stargazer(m, type = "text", single.row = T) 

затем проверить код команды Звездочет с body(stargazer). Надеемся, вы найдете объекты для ценностей, которые используют звезды, но не сообщают. Вы можете обратиться к ним, как это (если есть, например, объект с именем «null.deviance»

stargazers.values$null.deviance 

Или, если она является частью другого кадра данных, скажем, ДФ, он может пойти, как это

stargazers.values$df$null.deviance 

может быть код, как это мог бы быть полезным

print(null.deviance <- stargazers.values$null.deviance) 

Надеется, что это помогает!

+0

Я не думаю, что это сработает ... вы попробовали? Stargazer создает текст (или html или латекс), а не объекты, которые можно манипулировать. Назначение 'stargazer.values' просто присваивает текст команде' stargazer'. – paqmo

+0

@BrorGiesenbauer, @paqmo является правильным. Если вы набираете, например, 'str (m)', вы не можете видеть внутренности объекта stargazer, а скорее текст. – cimentadaj

+0

А, хорошо знать, я неправильно понял ваш вопрос и предположил, что звездочка возвращает значения класса «stargazer». Повторить: показывает ли «coeftest» все соответствующие значения, а «stargazer» просто опускает некоторые из них, которые вы хотели бы включить в свой отчет? –

 Смежные вопросы

  • Нет связанных вопросов^_^