如何在 R 中執行不平衡面板數據回歸?
我正在嘗試在 R 中執行不平衡的面板數據回歸。我的程式碼如下:
pdata <- plm.data(b2, index = c("ticker", "year")) try1 <- plm(formula = logDipLoanTotal ~ PrimeFiling + logLiabBefore + logSalesBefore + EmplBefore + DebttoAssetRatio + squareDebttoAssetRatio + FSCashShortTermInvestments + Percent + NUM_OF_EMPLOYEES, data = pdata, model = "within", effect = "time") summary(try1)
我遇到以下錯誤:
duplicate couples (id-time) in resulting pdata.frame to find out which, use e.g. table(index(your_pdataframe), useNA = "ifany") duplicate couples (id-time)
這很明顯 - 我遇到了問題,因為我的面板數據不平衡,其中程式碼/年份組合可能與多行數據相關聯。這是因為在當年與公司程式碼相關的年份完成了多項“交易”,或者有時在程式碼/年份組合中沒有進行任何交易。如何在具有不平衡數據的 RStudio 中執行這種模型?如果這沒有意義,請告訴我,我可以編輯問題。
在這裡,解決方案將取決於您要完成的任務。請注意,問題不僅在於序列不平衡,對於普通的不平衡面板數據集,其中公司有不同數量的 $ T $ 觀察命令仍然有效。這裡不需要調整,你可以自己輕鬆嘗試:
install.packages("plm") library("plm") data("EmplUK", package="plm") result<-plm(formula = wage ~ emp, data = EmplUK, model = "within") summary(result)
這給了你這個輸出:
不平衡面板:n = 140,T = 7-9,N = 1031
殘差:最小。第一曲。中位第三曲。最大限度。-12.13926 -1.21442 -0.20655 1.02437 17.11197
係數:估計標準。誤差 t 值 Pr(>|t|) emp -0.119813 0.031103 -3.8521 0.0001255 ***
因此,您可以使用不平衡的數據,而無需對 plm 程式碼本身進行任何額外的調整。我認為那裡的作者指的是在對函式進行程式以解決此問題時必須進行的調整(因為這會給矩陣帶來一些問題-至少這是我對您連結的文件的理解)。
但是,如果我對您的理解正確,那麼您遇到的問題不僅僅是面板不平衡,而是因為有這樣的重複觀察:
Firm ID | Year | event | x | Y | 1 | 1999 | 1jan2000 | 2 | 4 | 1 | 1999 | 20jan2000 | 24| 54 |
這是比不平衡面板更嚴重的問題。這裡的問題不是“不平衡”,而是如果您將執行任何具有公司 ID 和年份作為面板標識符的面板模型,您將有“重複”觀察結果,因為您不能將一個面板標識符分配給兩個不同的不同觀察結果意味著你的觀察不是唯一的。
這可以通過以下幾種方式之一解決:
- 如果事件不是在完全相同的時間發生,則在日期而不是年份上執行模型。所以現在您的面板標識符將是:公司 ID 事件而不是公司 ID 年份。
- 為每個事件創建新的公司 ID。因此,您可以像這樣創建新的公司 ID:
Firm ID | Year | event | x | Y | 1_1 | 1999 | 1jan2000 | 2 | 4 | 1_2 | 1999 | 20jan2000 | 24| 54 |
但是,內部估計器的缺點是,如果同一天的這些多個事件僅發生一次,這些事件會下降,而且我的直覺告訴我,如果您嘗試將公司級別的集群錯誤說成一個,這將導致一些方法問題公司將因沒有事件而受到不同的對待。
- 您還可以在一天內跨事件匯總 X 和 Y 的值,並且只為在給定年份發生多個事件的公司添加額外的虛擬變數。
- 考慮不同的估計器。例如,您可以使用合併 OLS,而不是在估計器中,將每個觀察結果視為具有固定效應的單個事件。我想不出為什麼不能在這裡應用它。
同樣在這裡,我建議搜尋具有重複項的面板,我知道這不是真正的重複項,但大多數情況下,在討論此問題時,許多人稱這些觀察結果為重複項,因此與僅搜尋不平衡的面板數據相比,它可能會給您更好的結果這通常適用於您只有不同的面板數據 $ T $ 對於每個面板 ID。
提供一個可複制的例子會很有幫助。在論文Panel Data Econometrics in R: The plm Package中,作者明確提到經濟面板數據集經常碰巧是不平衡的,這種情況需要對方法進行一些調整。希望他們提供一個解決方案,並且他們的工作成果被捆綁在
plm
附加包中。以下範例來自 Arellano 和 Bond (1991)。就業由過去的就業價值(兩個滯後)、工資和產出的目前和第一滯後以及資本的目前價值來解釋。
R> emp.gmm <- pgmm(dynformula(emp ~ wage + capital + output, lag = list(2, + 1, 0, 1), log = TRUE), EmplUK, effect = "twoways", model = "twosteps", + gmm.inst = ~log(emp), lag.gmm = list(c(2, 99))) R> summary(emp.gmm)
通話:不平衡面板:n=140,T=7-9,N=1031