Как получить индивидуальные коэффициенты и остатки в данных панели, используя фиксированные эффекты

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

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. Но я думаю, вам придется написать код, чтобы сделать оценку самостоятельно.

Другие вопросы по тегам