включение нелинейности в модель фиксированных эффектов в plm

#r #regression #plm

Вопрос:

Я пытаюсь построить регрессию с фиксированными эффектами с помощью пакета plm в R. Я использую данные панели на уровне страны с фиксированными эффектами за год и страну. Моя проблема касается 2 объясняющих переменных. Один — это член взаимодействия двух переменных, а другой-квадратный член одной из переменных.

модель в основном такова: y = x1 x1^2 x3 x1*x3 … xn , при этом все переменные представлены в виде журнала

Центральное место в модели занимает включение квадратного члена, но когда я запускаю регрессию, она всегда исключается из-за «особенностей», поскольку x1 и x1^2 явно коррелируют. Это означает, что регрессия работает, и я получаю оценки для своих переменных, только не для x1^2 и x1*x2. Как мне обойти это?

 library(plm) fe_reglt;- plm(log(y) ~ log(x1) log(x2) log(x2^2) log(x1*x2) dummy,  data = df,  index = c("country", "year"),   model = "within",  effect = "twoways") summary(fe_reg)   ´´´  #I have tried defining the interaction and squared terms as vectors, which helped with the #interaction term but not the squared term.   df1.pdlt;- df1 %gt;% mutate_at(c('x1'), ~(scale(.) %gt;% as.vector)) df1.pdlt;- df1 %gt;% mutate_at(c('x2'), ~(scale(.) %gt;% as.vector))  ´´´ I am pretty new to R, so apologies if this not a very well structured question.  

Ответ №1:

Вы только что нашли два свойства функции логарифма:

журнал(x^2) = 2 * журнал(x)

журнал(x*y) = журнал(x) журнал(y)

Тогда, очевидно, log(x) коллинеарен с 2*log(x), и одна из двух коллинеарных переменных исключается из оценки. То же самое для журнала(x*y) и журнала(x) журнала(y).

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

См. Также воспроизводимый пример ниже, где я только что использовал log(x^2) = 2*log(x). Линейная зависимость может быть обнаружена, например, с помощью функции detect.lindep из пакета plm (см. Также ниже). Удаление коэффициентов из оценки также указывает на коллинеарные столбцы в матрице оценки модели. Иногда линейная зависимость появляется только после преобразований данных, выполняемых в функциях оценки (см. Пример преобразования внутри страницы справки ?detect.lindep в разделе Пример).

 library(plm) data("Grunfeld") pGrun lt;- pdata.frame(Grunfeld) pGrun$lvalue lt;- log(pGrun$value) # log(x) pGrun$lvalue2 lt;- log(pGrun$value^2) # log(x^2) == 2 * log(x)  mod lt;- plm(inv ~ lvalue   lvalue2   capital, data = pGrun, model = "within") summary(mod) #gt; Oneway (individual) effect Within Model #gt;  #gt; Call: #gt; plm(formula = inv ~ lvalue   lvalue2   capital, data = pGrun,  #gt; model = "within") #gt;  #gt; Balanced Panel: n = 10, T = 20, N = 200 #gt;  #gt; Residuals: #gt; Min. 1st Qu. Median 3rd Qu. Max.  #gt; -186.62916 -20.56311 -0.17669 20.66673 300.87714  #gt;  #gt; Coefficients: (1 dropped because of singularities) #gt; Estimate Std. Error t-value Pr(gt;|t|)  #gt; lvalue 30.979345 17.592730 1.7609 0.07988 .  #gt; capital 0.360764 0.020078 17.9678 lt; 2e-16 *** #gt; --- #gt; Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 #gt;  #gt; Total Sum of Squares: 2244400 #gt; Residual Sum of Squares: 751290 #gt; R-Squared: 0.66525 #gt; Adj. R-Squared: 0.64567 #gt; F-statistic: 186.81 on 2 and 188 DF, p-value: lt; 2.22e-16  detect.lindep(mod) # run on the model  #gt; [1] "Suspicious column number(s): 1, 2" #gt; [1] "Suspicious column name(s): lvalue, lvalue2"  detect.lindep(pGrun) # run on the data #gt; [1] "Suspicious column number(s): 6, 7" #gt; [1] "Suspicious column name(s): lvalue, lvalue2"  

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

1. журнал(x*y) также эквивалентен журналу(x) журналу(y), который является другим термином, который отбрасывается.

2. О, да, конечно, я пропустил это! Спасибо! Я отредактировал свой ответ.