2012-06-07 37 views
0

我正在嘗試使用plm來估計具有個人特定時間趨勢的固定效果面板,並針對與other people相同的問題運行。我非常樂意使用鏈接CrossValidated問題中描述的解決方法,但無法弄清楚如何生成必要的數據框列。手動生成交互術語

即,我的形式

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

的數據幀,並希望添加到該數據幀的列的每個名爲date_idXid,具有相同的值作爲date的所有觀測值其中id==X,否則爲零。

我的問題的任何更優雅的解決方案當然也將不勝感激。

+0

你的意思與'date'相同嗎? –

+0

恩,對,對不起! – 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個。有關於econ和混合效果主題的R-SIG郵件列表。 –