Ошибка пакета Margins с использованием квадратичных условий и условий взаимодействия

#r #margins #estimation

#r #поля #оценка

Вопрос:

У меня есть код, который использует команду margins в Stata, и я пытаюсь воспроизвести его в R, используя пакет «margins», найденный здесь и на cran.

Я продолжаю получать ошибку:

 marg1<-margins(reg2)  
 

Ошибка в именах (классах) <- clean_terms (имена (классы)) : атрибут ‘names’ [18] должен иметь ту же длину, что и вектор [16] «

Минимальный воспроизводимый пример показан ниже:

 install.packages(margins)
library(margins)
mod1 <- lm(log(mpg) ~ vs   cyl   hp   vs*hp   I(vs*hp*hp)   wt   I(hp*hp), data = mtcars)
(marg1 <- margins(mod1))
summary(marg1)
 

Мне нужно, чтобы vs была фиктивной переменной, взаимодействующей как с квадратичным термином, так и с обычным взаимодействием.

Кто-нибудь знает, что я делаю неправильно, или есть ли способ обойти это?

Ответ №1:

Ваша спецификация модели немного сбивает с толку. Например, vs * hp вводит 3 переменные: i) vs, ii) hp и iii) взаимодействие vs и hp. В результате hp дважды появляется в приведенной вами формуле. Вы можете значительно упростить! Попробуйте это, например (я думаю, это то, что вы хотите):

 mtcars$hp2 = mtcars$hp^2
mod1 <- lm(log(mpg) ~ cyl   wt   vs*hp   vs*hp2, data = mtcars)
summary(mod1) # With this you can check that the model you specified is what you want
(marg1 <- margins(mod1)) # The error disappeared. 
summary(marg1)
 

В общем, я бы рекомендовал вам избегать I() в спецификациях формул, поскольку это часто приводит к таким ошибкам, если не относиться к ним с достаточной осторожностью (хотя иногда этого избежать невозможно). Удачи!

Комментарии:

1. Я подумал об этом, моя проблема заключается в том, правильно ли вычисляются производные для предельных эффектов при создании переменной в квадрате. Спасибо за ответ, хотя!

2. Не совсем, ваш вопрос, похоже, касался того, как устранить ошибку. Если вы хотите обсудить, отличается ли полученная сводная статистика от полученной в Stata, поделитесь результатами, которые вы получили в Stata, чтобы мы могли провести сравнение.