面板数据模型的理解

admin / 博文 / ... / Reads: 2713

面板数据是截面数据和时间序列的结合,截面数据模型和时间序列模型都很直观,容易理解。那么,面板数据模型该如何理解呢?

为了搞清楚面板数据模型的含义,需要认识到在回归模型中,我们关心的是斜率,而不太关心截距项。斜率反映了变量之间的关系,而截距项反映了初始值的差异!例如,我们想研究一项政策对地区经济增长的影响,A地区和B地区初始经济发展水平不同,但只要实施该政策后A地区和B地区都可以获得经济增长,这项政策就是有效的。

面板数据模型就是在对截面上不同个体的差异进行控制、对各时间节点上的差异进行控制的基础上,将模型聚焦在自变量与因变量之间的关系上,计算出自变量对因变量的平均影响程度(面板数据的样本量更大,因而与单纯用截面数据或时间序列估相比,面板数据模型的估计结果更优!)。

面板数据模型的理解

我们以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

Author: admin

Publish at: ...

关注公众号: