2012-06-07 4 views
0

Я пытаюсь оценить панель с фиксированными эффектами с индивидуальными тенденциями времени, используя plm, и я столкнулся с той же проблемой, что и other people. Я более чем готов использовать обходное решение, описанное в связанном вопросе CrossValidated, но не могу понять, как создать необходимые столбцы фреймов данных.Создание условий взаимодействия вручную

То есть, у меня есть кадр данных формы

data.frame(date=rep(1:5,times=3),id=rep(1:3,each=5)) 

и хотел бы добавить к этому кадру данных столбца для каждого id, который называется date_idX, имеет такое же значение, как date для всех наблюдений где id==X и ноль в противном случае.

Конечно, любые элегантные решения моей проблемы также будут оценены.

+0

Вы имеете в виду то же значение, что и 'date'? –

+0

erm, да, извините! – RoyalTS

ответ

1
> dfrm <- data.frame(date=rep(1:5,times=3),id=rep(1:3,each=5)) 
> 
> X <-3; dfrm$time_idX <- dfrm$date*(dfrm$id==X) 
> dfrm 
    date id time_idX 
1  1 1  0 
2  2 1  0 
3  3 1  0 
4  4 1  0 
5  5 1  0 
6  1 2  0 
7  2 2  0 
8  3 2  0 
9  4 2  0 
10 5 2  0 
11 1 3  1 
12 2 3  2 
13 3 3  3 
14 4 3  4 
15 5 3  5 

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

regfun(form = yield ~ I(date*(id==X)), data=dfrm) 

Я не гарантирующий это будет правильное решение проблемы использования PLM, но это метод, который должен работать с обычной регрессии. Вы должны отредактировать свой вопрос, чтобы включить правильный тестовый пример.

+0

Кажется, я не сделал себе достаточно ясного в вопросе: я пробовал просто положить 'date * id' в формулу, но это не работает в' plm' по причинам, упомянутым в связанном вопросе CrossValidated. Предлагаемое решение состоит в том, чтобы вручную создать эти индивидуальные тенденции времени, а затем добавить их в формулу. И поскольку у меня есть что-то вроде 300 человек, мне понадобится 300 переменных, каждый из которых содержит временную тенденцию. Таким образом, 'date_idX' должен был стоять за всю партию' date_id1', 'date_id2',' date_id3' и т. Д. – RoyalTS

+0

На самом деле я не вижу упоминания о термине, который я понял как дату *. Я видел модель, похожую на y ~ date + date: id. Мое предложение состоит в том, чтобы создать сокращенный блок данных, скажем, 4 человека и 5 периодов времени, и работать с более управляемым «тестовым стендом». Тогда вы можете работать до 300. Есть списки рассылки R-SIG для разделов econ и смешанных эффектов. –

Смежные вопросы