Я пытаюсь сделать F-тест на совместную значимость фиксированных эффектов (фиктивных переменных для отдельных лиц) для регрессии OLS данных панели (в R), однако я не нашел способа сделать это длябольшое количество фиксированных эффектов.В идеале я хотел бы использовать функцию в пакете plm
, однако я не нашел ничего, что конкретно выполняет этот тест.
Это то, что Stata делает автоматически при использовании команды xtreg, fe
.В Stata результаты выглядят так:
------------------------------------------------------------------------------
F test that all u_i=0: F(49, 498) = 12.00 Prob > F = 0.000
Снова, я пытаюсь воспроизвести результат Stata в R для большого количества фиктивных переменных, возможно, указанных + factor(us.state)
с использованием lm()
или model = "fe"
с использованием plm()
.
Вот воспроизводимый пример:
require(foreign)
voter <- read.dta("http://www.montana.edu/econ/cstoddard/562/panel_hw.dta")
reg1 <- lm(vaprate ~ gsp + midterm + regdead + WNCentral + South + Border
+ factor(state), data=voter)
, который эквивалентен следующей регрессии "в пределах" с использованием пакета plm
.
require(plm)
reg1.fe <- plm(vaprate ~ gsp + midterm + regdead + WNCentral + South + Border,
data=voter, index = c("state","year"), model = "within")
Таким образом, тест будет тестом на то, что все фиктивные переменные состояния совместно отличаются от нуля (совместно значимых).Это линейное ограничение для неограниченной модели (reg1 и reg1.fe выше).Этот F-тест лучше объяснен в следующем документе (см. Слайды 5-7).
http://jackman.stanford.edu/classes/350B/07/ftestforWeb.pdf
Вот одна из моих слабых попыток создания матрицы 'R' дляF-тест с нулевой гипотезой: Rb = q, где b - матрица коэффициентов (бета-версия), а q - вектор нулей.
d1 = length(unique(voter$stcode))-1
d2 = length(reg1$coefficients)
R = cbind(matrix(0,d1,d2),diag(d1))
linearHypothesis(reg1,R,rhs=0)
Это не работает!И я надеюсь, что существует оптимизированный подход к проверке совместной значимости всех фиктивных переменных с фиксированным эффектом.