R語言1-面板數據分析全過程 附代碼
# 用途
面板數據常見於計量經濟學領域,本質上是一種線性回歸方法。截面數據和時間序列數據的組合可以更多的反應數據情況,同時也需要克服二者都存在的問題。
## 數據初步處理
在Excel中將原數據進行初步處理和排列並另存為csv格式,建議將文件存放於便於提取的路徑下。

因變量為export.value,自變量分別為gdp、sagr、iagr、tagr、gni.p、food…其中apec和close是啞變量。截面為27個國家,時間跨度為2001-2018年。
## 數據清洗
在現實的經濟數據中,數據不可避免的會存在缺失等問題。因此需要對數據進行清洗,並對缺失數據集進行插補。插補方法較多,R為面板數據提供了專門的程輯包:pan包。
首先進行缺失數據的可視化,然后針對缺失數據集進行插補。注意因變量應該是完整的,pan包主要是處理自變量的缺失。
[ 詳細的插補步驟和方法請參考這篇博文
](https://blog.csdn.net/sinat_26917383/article/details/51265213?depth_1-utm_source=distribute.pc_relevant.none-
task-blog-BlogCommendFromBaidu-2&utm_source=distribute.pc_relevant.none-task-
blog-BlogCommendFromBaidu-2)
## 面板數據的單位根檢驗
```code
// 讀取數據
lndataI<-read.csv("E://lndataI.csv",header = TRUE);
lnDATAI<-as.matrix(lndataI[,3:15])
//加載程輯包
library(plm)
//matrix形式簡化檢驗步驟
purtest(lnDATAI,test = c("levinlin"),exo = c("trend"),lags = c("AIC"),pmax = 10)
//可選參數
test = c("levinlin", "ips", "madwu", "Pm", "invnormal", "logit", "hadri"),
exo = c("none", "intercept", "trend"),
lags = c("SIC", "AIC", "Hall")
```
注意:五種檢驗方式中,只有Hadri函數的原假設為平穩,其他均為不平穩。
若0階不平穩,則對原數據進行差分再進行單位根檢驗,直至平穩。
## 協整檢驗
1.pco包提供 _pedroni99m_
方法。每個變量分割成矩陣再結合成(多維)數組,第一個矩陣必須是自變量,其余為因變量。每個矩陣第一維(行)是時間,第二維(列)是個體(截面),第三維是變量值。
_該函數最多檢驗7維數組_ ,即最多檢驗7個變量。
當standardized value服從標准正態分布(0,1)時,服從H0假設,即數組不協整。
引入ks檢驗標准正態分布
```code
// pedroni99m協整檢驗
pedroni99m(array(t1,dim = c(19,27,6)),type.stat = 2)
//標准正態分布檢驗
ks.test(standardized value,"pnorm",mean=0,sd=1)
```
2.urca包提供ca.jo檢驗
最多檢驗11個變量,包容啞變量。但變量個數增多后會導致不顯示邊界值,很不方便。可以通過修改源代碼,增加檢驗變量個數,同時顯示所有的critical
values。
親測可行
代碼太長就不貼了。
## 面板回歸詳細代碼
```code
// 讀入標准面板格式數據
panel<-pdata.frame(data,index = c("year","id"))
//構建固定模型-雙效應/時間效應/個體效應
fix<-plm(export.value~gdp+sagr+iagr+tagr+gni.p+I+food+gid+safe+trans+taf+culture+apec+close,data = panel,model = "within")
fix_two<-plm(export.value~gdp+sagr+iagr+tagr+gni.p+I+food+gid+safe+trans+taf+culture+apec+close,data = panel,model = "within",effect = "twoways")
fix_time<-plm(export.value~gdp+sagr+iagr+tagr+gni.p+I+food+gid+safe+trans+taf+culture+apec+close,data = panel,model = "within",effect = "time")
fix_individual<-plm(export.value~gdp+sagr+iagr+tagr+gni.p+I+food+gid+safe+trans+taf+culture+apec+close,data = panel,model = "within",effect = "individual")
//構建隨機模型-雙效應/時間效應/個體效應
ran<-plm(export.value~gdp+sagr+iagr+tagr+gni.p+I+food+gid+safe+trans+taf+culture+apec+close,data = panel,model = "random")
ran_two<-plm(export.value~gdp+sagr+iagr+tagr+gni.p+I+food+gid+safe+trans+taf+culture+apec+close,data = panel,model = "random",effect = "twoways")
ran_time<-plm(export.value~gdp+sagr+iagr+tagr+gni.p+I+food+gid+safe+trans+taf+culture+apec+close,data = panel,model = "random",effect = "time")
ran_individual<-plm(export.value~gdp+sagr+iagr+tagr+gni.p+I+food+gid+safe+trans+taf+culture+apec+close,data = panel,model = "random",effect = "individual")
//混合模型
pool<-plm(export.value~gdp+sagr+iagr+tagr+gni.p+I+food+gid+safe+trans+taf+culture+apec+close,data = panel,model = "pooling")
//F檢驗-個體or時間
pooltest(fix_time,fix_individual)
//F檢驗-混合or固定
pooltest(fix,pool)
//豪斯曼檢驗-隨機or固定
phtest(fix,ran)
//==共線性檢驗==方差膨脹因子
library(car)
vif(ran)
vif(pool)
vif(fix)
//==共線性檢驗==kappa
kappa(panel[,3:18])
```
## 結果分析
略

