Как получить индивидуальные коэффициенты и остатки в данных панели, используя фиксированные эффекты
У меня есть групповые данные, включая доход для отдельных лиц за несколько лет, и меня интересуют тенденции доходов отдельных лиц, то есть индивидуальные коэффициенты для доходов по годам и остатки для каждого человека за каждый год (неожиданные изменения в доходе согласно моей модели), Тем не менее, у меня есть много наблюдений с отсутствующими данными о доходах, по крайней мере, в течение одного или нескольких лет, поэтому при линейной регрессии я теряю большинство своих наблюдений. Структура данных выглядит следующим образом:
caseid<-c(1,1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,3,3,4,4,4,4,4,4)
years<-c(1998,2000,2002,2004,2006,2008,1998,2000,2002,2004,2006,2008,
1998,2000,2002,2004,2006,2008,1998,2000,2002,2004,2006,2008)
income<-c(1100,NA,NA,NA,NA,1300,1500,1900,2000,NA,2200,NA,
NA,NA,NA,NA,NA,NA, 2300,2500,2000,1800,NA, 1900)
df<-data.frame(caseid, years, income)
Я решил использовать модель случайных эффектов, которая, как мне кажется, все еще будет предсказывать доход за пропущенные годы с использованием подхода максимального правдоподобия. Однако, поскольку тест Хаусмана дает значительный результат, я решил использовать модель с фиксированными эффектами. И я запустил код ниже, используя пакет plm:
inc.fe<-plm(income~years, data=df, model="within", effect="individual")
Однако я получаю коэффициенты только по годам, а не по отдельным лицам; и я не могу получить остатки. Чтобы дать представление, код в Stata должен быть
xtest caseid
xtest income year
predict resid, resid
Затем я попытался запустить функцию pvcm из той же библиотеки, которая является функцией для переменных коэффициентов.
inc.wi<-pvcm(Income~Year, data=ldf, model="within", effect="individual")
Тем не менее, я получаю следующее сообщение об ошибке: "Ошибка в FUN(X[[i]], ...): недостаточное количество наблюдений".
Как я могу получить индивидуальные коэффициенты и остатки с помощью pvcm, разрешив эту ошибку или используя какую-то другую функцию?
Мои оригинальные подробные данные имеют 202976 наблюдений и 15 лет.
Я также был бы очень признателен за любые комментарии или предложения по поводу метода, который я выбрал для анализа. Большое спасибо.
2 ответа
Ли fixef
функция из пакета plm
дать вам то, что вы ищете? Продолжая ваш пример:
fixef(inc.fe)
Остатки извлекаются путем:
residuals(inc.fe)
У вас есть модель случайных эффектов со случайными наклонами и перехватами. Это также известно как модель регрессии случайных коэффициентов. Отсутствие - сложная часть, которую (я предполагаю) вам придется написать собственный код, чтобы решить, после того, как вы решите, как вы хотите это сделать.
Но, насколько я могу судить, вы не четко / правильно указали свою модель (по крайней мере, в своем вопросе). Давайте определим некоторые термины:
Пусть Y_it = доход для ind i (i= 1,..., N) в год t (t= 1,...,T). Когда я читаю ваш вопрос, вы не указали, какую из двух представленных ниже моделей вы хотите иметь:
M1: случайные перехваты, глобальный уклон, случайные уклоны
Y_it ~ N(\mu_i + B T + \gamma_i I T, \sigma^2)
\mu_i ~ N(\phi_0, \tau_0^2)
\gamma_i ~ N(\phi_1, tau_1^2)
M2: случайные перехваты, случайные уклоны
Y_it ~ N(\mu_i + \gamma_i I T, \sigma^2)
\mu_i ~ N(\phi_0, \tau_0^2)
\gamma_i ~ N(\phi_1, tau_1^2)
Кроме того, ваш пример данных не имеет смысла (см. Ниже). Как видите, у вас недостаточно наблюдений для оценки всех параметров. Я не знаком с library(plm)
но приведенные выше модели (без пропусков) можно оценить в lme4
без труда. Без реалистичного примера набора данных я не буду беспокоиться о предоставлении кода.
R> table(df$caseid, is.na(df$income))
FALSE TRUE
1 2 4
2 4 2
3 0 6
4 5 1
Учитывая, что у вас есть пропущенные, вы должны быть в состоянии произвести оценки для любой иерархической модели с помощью типичных методов, таких как EM. Но я думаю, вам придется написать код, чтобы сделать оценку самостоятельно.