Как получить индивидуальные коэффициенты и остатки в панельных данных с помощью фиксированных эффектов

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

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 лет.

Я также был бы очень признателен за любые комментарии или предложения по выбору метода анализа. Большое тебе спасибо.


person Aslı Gürer    schedule 25.05.2016    source источник
comment
Итак, чтобы уточнить, ваша формула регрессии income~years, и вы ожидаете получить коэффициенты для чего-то еще, кроме years, а именно individuals?   -  person coffeinjunky    schedule 26.05.2016
comment
@coffeinjunky Я хочу получить коэффициенты изменения дохода по годам для каждого человека. Я хочу посмотреть, идет ли он по восходящей или нисходящей траектории и каков был наклон этой тенденции для каждого человека (казеид 1, казеид 2, казеид 3, казеид 4) по отдельности. Затем, на более позднем этапе, я хочу посмотреть на связь этой тенденции личного дохода с некоторыми переменными, связанными со здоровьем. Вот почему меня интересует коэффициент дохода ~ год для каждого человека.   -  person Aslı Gürer    schedule 26.05.2016
comment
Не могли бы вы предоставить некоторые выходные данные Stata, показывающие, что будут делать команды xtest caseid ; xtest income year? Я не эксперт по Stata, и ни моя версия Stata, ни Google не распознают эти команды. Кроме того, мне трудно понять, что вы хотите сделать. Регрессия A на B никогда не даст вам никаких коэффициентов, кроме коэффициента на B, и, в частности, коэффициентов для отдельных наблюдений.   -  person coffeinjunky    schedule 26.05.2016


Ответы (2)


Дает ли функция fixef из пакета plm то, что вы ищете? Продолжая ваш пример:

fixef(inc.fe)

Остатки извлекаются:

residuals(inc.fe)
person Helix123    schedule 26.05.2016
comment
Большое спасибо! Теперь я получил остатки. Я не знал об этих функциях, но недавно понял, что в такой модели (по ее логике) нет способа получить индивидуальные коэффициенты, я прав? - person Aslı Gürer; 30.05.2016

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

Но насколько я могу судить, вы четко / правильно не указали свою модель (по крайней мере, в своем вопросе). Определим несколько терминов:

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

person Alex W    schedule 26.05.2016