面板数据模型

Reads: 5210 Edit

截面数据和时间序列数据是最基础的数据类型,但是在实际应用中,两种数据类型均有一些难以处理的问题!

对于截面数据,模型中往往存在异方差、多重共线性、内生性等问题。对于时间序列数据,在建模时则受到平稳性的约束。虽然计量经济学家发明了处理这些问题的诸多精妙方法,但是不免会加入新的假设、约束条件,导致模型越来越复杂,并且现实数据也很难满足所有的假设和约束!导致模型与估计结果的可信度受到怀疑。与之相比,增加样本可以说是修正计量模型各种问题的最简单、高效和万能方法!

面板数据包含截面与时间两个维度,样本量自然获得提升。除此之外,面板数据模型还可以对截面上不同个体的差异进行控制,对各时间节点上的差异进行控制,模型结果聚焦在研究的核心问题上(即自变量因变量之间的关系)。

因而,面板数据模型已经成为社会科学中实证研究的最主要的数据类型,没有之一。

1 面板数据模型的形式

面板数据模型与多元线性回归模型非常相似,只是在其模型基础上加入了时间元素。

2 面板数据模型的理解

我们已2017至2020四年安徽、北京、福建三个地区的数据来演示,面板数据的形式如下图所示:

394-1

数据的散点图为:

395

我们将面板数据按地区分为安徽、北京、福建三部分,每个地区的散点图如下所示:

396

可以发现,每个地区的数据其实就是时间序列数据,我们可以对3个地区的数据分别建立3个回归方程!

3个回归方程的直线如下所示:

3个地区的进出口和GDP有不同的关系及趋势!

397

同理,我们可以按照时间把样本分为2017(安徽、北京,福建),2018(安徽、北京,福建),2019(安徽、北京,福建),2020(安徽、北京,福建)4年的截面数据!四年的散点图如下所示:

398

4个回归方程的直线如下所示:

4年的回归方程有不同的斜率和截距项!

399

面板数据模型其实就是把所有数据混合在一起进行回归,将上述7个方程融合为一个回归方程(即考虑了不同地区,又考虑了不同年份),模型的方程揭示了进出口对GDP的平均影响!

需要注意的是,下图是混合面板的图形,只有一条回归方程!如果对地区差异进行控制,那么将有3条平行的回归方程(斜率相同,截距项不同),如果对时间差异进行控制,那么将有4条平行的回归方程,如果同时对地区差异和时间差异进行控制,将有7条平行的回归方程!

对地区差异或时间差异进行控制,本质上就是对地区和时间的差异(截距项体现了差异)进行分离,以使模型中解释变量的系数估计更为准确!,更好的反应解释变量与被解释变量的关系(解释变量的系数即反应了变量之间的关系和影响程度:解释变量变动1单位对被解释变量的影响)。

400


例子采用R进行绘图,代码如下,感兴趣的话可以亲自试一试!

dt <- data.frame(prov=c('安徽','安徽','安徽','安徽','北京','北京','北京','北京','福建','福建','福建','福建'),year=c(2017,2018,2019,2020,2017,2018,2019,2020,2017,2018,2019,2020),export=c(509.87,594.01,637.8,746.1,1216.18,1274.19,1122.8,1148.4,1530.77,1728.3,1747.7,1717.5),gdp=c(27018,34010.9,37114,38680.6,28014.9,33106,35371.3,36102.6,32182.1,38687.8,42395,43903.9)) #读取数据
#绘制截面的三个回归方程
plot(dt$export,dt$gdp,xlim=c(200,2000),ylim=c(20000,55000),pch=19)
points(dt$export[1:4],dt$gdp[1:4],xlim=c(200,2000),ylim=c(20000,55000),col="red",pch=19)
points(dt$export[9:12],dt$gdp[9:12],xlim=c(200,2000),ylim=c(20000,55000),col="blue",pch=19)

gdp_anhui=dt$gdp[1:4]
export_anhui=dt$export[1:4]
gdp_beijing=dt$gdp[5:8]
export_beijing=dt$export[5:8]
gdp_fujian=dt$gdp[9:12]
export_fujian=dt$export[9:12]

cross_anhui <-lm( gdp_anhui ~ export_anhui) 
cross_beijing <-lm( gdp_beijing ~ export_beijing) 
cross_fujian <-lm( gdp_fujian ~ export_fujian) 

axis_anhui <- data.frame(export_anhui=seq(200,2000,18)) 
axis_beijing <- data.frame(export_beijing=seq(200,2000,18)) 
axis_fujian <- data.frame(export_fujian=seq(200,2000,18)) 

predict_anhui <-predict(cross_anhui,axis_anhui)
predict_beijing <-predict(cross_beijing,axis_beijing)
predict_fujian <-predict(cross_fujian,axis_fujian)

lines(axis_anhui$export_anhui,predict_anhui,col="red",lwd=2,lty=1)
lines(axis_beijing$export_beijing,predict_beijing,col="black",lwd=2,lty=1)
lines(axis_fujian$export_fujian,predict_fujian,col="blue",lwd=2,lty=1)
 
#绘制时间的四个方程
plot(dt$export,dt$gdp,xlim=c(200,2000),ylim=c(20000,55000),pch=19)
points(dt$export[c(1,5,9)],dt$gdp[c(1,5,9)],xlim=c(200,2000),ylim=c(20000,55000),col="red",pch=19)
points(dt$export[c(3,7,11)],dt$gdp[c(3,7,11)],xlim=c(200,2000),ylim=c(20000,55000),col="blue",pch=19)
points(dt$export[c(4,8,12)],dt$gdp[c(4,8,12)],xlim=c(200,2000),ylim=c(20000,55000),col="green",pch=19)

gdp_2017=dt$gdp[c(1,5,9)]
export_2017=dt$export[c(1,5,9)]
gdp_2018=dt$gdp[c(2,6,10)]
export_2018=dt$export[c(2,6,10)]
gdp_2019=dt$gdp[c(3,7,11)]
export_2019=dt$export[c(3,7,11)]
gdp_2020=dt$gdp[c(4,8,12)]
export_2020=dt$export[c(4,8,12)]

cross_2017 <-lm( gdp_2017 ~ export_2017) 
cross_2018 <-lm( gdp_2018 ~ export_2018) 
cross_2019 <-lm( gdp_2019 ~ export_2019) 
cross_2020 <-lm( gdp_2020 ~ export_2020) 

axis_2017 <- data.frame(export_2017=seq(200,2000,18)) 
axis_2018 <- data.frame(export_2018=seq(200,2000,18)) 
axis_2019 <- data.frame(export_2019=seq(200,2000,18)) 
axis_2020 <- data.frame(export_2020=seq(200,2000,18)) 

predict_2017 <-predict(cross_2017,axis_2017)
predict_2018 <-predict(cross_2018,axis_2018)
predict_2019 <-predict(cross_2019,axis_2019)
predict_2020 <-predict(cross_2020,axis_2020)

lines(axis_2017$export_2017,predict_2017,col="red",lwd=2,lty=1)
lines(axis_2018$export_2018,predict_2018,col="black",lwd=2,lty=1)
lines(axis_2019$export_2019,predict_2019,col="blue",lwd=2,lty=1)
lines(axis_2020$export_2020,predict_2020,col="green",lwd=2,lty=1)

#绘制总回归方程
plot(dt$export,dt$gdp,xlim=c(200,2000),ylim=c(20000,55000),pch=19)
gdp <- dt$gdp
export <- dt$export

cross <- lm( gdp ~ export) 
axis <- data.frame(export=seq(200,2000,18)) 
predict <-predict(cross,axis)
lines(axis$export,predict,col="red",lwd=2,lty=1)

Comments

Make a comment