Звездочет разбирает переменные, когда наблюдения прерываются

Я использую stargazer для создания таблицы для нескольких моделей. На самом деле это одна и та же модель, но первая основана на всех наблюдениях, а другая соответственно отбрасывает разные наблюдения. Все переменные названы одинаково, поэтому меня удивляет то, что когда я экспортирую таблицу в Latex, две строки, одна для фиктивной переменной, а другая для термина взаимодействия, дублируются.

Что действительно странно, так это то, что я не могу воспроизвести результаты, но тем не менее я опубликую минимальный рабочий пример. Возможно, вы сможете мне помочь, основываясь только на моем описании.

Это код моего MWE:

library(tibble)
library(stargazer)

df <- as_tibble(data.frame(first = rnorm(100, 50), second = rnorm(100, 30), third = rnorm(100, 100), fourth = c(rep(0, 50), rep(1, 50))))

model.1 <- lm(first ~ second + third + fourth + third*fourth, data = df)
model.2 <- lm(first ~ second + third + fourth + third*fourth, data = df[!rownames(df) %in% "99",])
stargazer(model.1, model.2)

Теперь я опубликую вывод Latex, содержащий ошибку, которую я пытаюсь исправить (с этим фрагментом, похоже, все работает нормально).

Таблица со странным содержимым ячеек

Конечно, я хотел бы получить код, созданный этим фрагментом (я чувствую себя очень глупо из-за того, что не могу его воспроизвести):

Стол работает нормально


person Tea Tree    schedule 04.02.2018    source источник


Ответы (1)


вы можете взглянуть на названия коэффициентов вашей модели, используя coefficients(). Убедитесь, что они идентичны, т.е. identical(names(model.1), names(model.2)) Затем используйте оператор stargazer keep, чтобы убедиться, что вы получаете желаемые коэффициенты,

В приведенном выше примере с сохранением выбранных переменных;

coefficients(model.1)
#>  (Intercept)       second        third       fourth third:fourth 
#>  57.27352606   0.02674072  -0.08236250  20.23596216  -0.20288137 

coefficients(model.2)
#>  (Intercept)       second        third       fourth third:fourth 
#>  57.06149556   0.03305134  -0.08214812  20.85087288  -0.20885718

identical(names(model.1), names(model.2))
#> [1] TRUE

Я использую type = "text", чтобы сделать его более удобным для SO, но я думаю, что то же самое и с LaTeX,

stargazer(model.1, model.2, type = "text", keep=c("third","third:fourth"))
#> 
#> =========================================================
#>                              Dependent variable:         
#>                     -------------------------------------
#>                                     first                
#>                            (1)                (2)        
#> ---------------------------------------------------------
#> third                     -0.082             -0.082      
#>                          (0.166)            (0.167)      
#>                                                          
#> third:fourth              -0.203             -0.209      
#>                          (0.222)            (0.223)      
#>                                                          
#> ---------------------------------------------------------
#> Observations               100                 99        
#> R2                        0.043              0.044       
#> Adjusted R2               0.002              0.004       
#> Residual Std. Error  1.044 (df = 95)    1.047 (df = 94)  
#> F Statistic         1.056 (df = 4; 95) 1.089 (df = 4; 94)
#> =========================================================
#> Note:                         *p<0.1; **p<0.05; ***p<0.01

но может быть трудно исключить, что это локальная проблема, если мы не сможем найти способ воспроизвести вашу проблему.

person Eric Fail    schedule 04.02.2018
comment
Хорошо, что на самом деле решило мою проблему, так это повторный запуск всего скрипта. Но я уверен, что ваше решение дало бы мне ответ, если бы это не сработало. Спасибо! - person Tea Tree; 04.02.2018