********* 面板数据计量分析与软件实现 *********
说明:以下do文件相当一部分内容来自于中山大学连玉君STATA教程,感谢他的贡献。本人做了一定的修改与筛选。
*----------面板数据模型 * 1.静态面板模型:FE 和RE
* 2.模型选择:FE vs POLS, RE vs POLS, FE vs RE (pols混合最小二乘估计) * 3.异方差、序列相关和截面相关检验 * 4.动态面板模型(DID-GMM,SYS-GMM) * 5.面板随机前沿模型
* 6.面板协整分析(FMOLS,DOLS)
*** 说明:1-5均用STATA软件实现, 6用GAUSS软件实现。
* 生产效率分析(尤其指TFP):数据包络分析(DEA)与随机前沿分析(SFA)
*** 说明:DEA由DEAP2.1软件实现,SFA由Frontier4.1实现,尤其后者,侧重于比较C-D与Translog生产函数,一步法与两步法的区别。常应用于地区经济差异、FDI溢出效应(Spillovers Effect)、工业行业效率状况等。
* 空间计量分析:SLM模型与SEM模型
*说明:STATA与Matlab结合使用。常应用于空间溢出效应(R&D)、财政分权、地方政府公共行为等。
* ---------------------------------
* -------- 一、常用的数据处理与作图 ----------- * ---------------------------------
* 指定面板格式
xtset id year (id为截面名称,year为时间名称) xtdes /*数据特征*/
xtsum logy h /*数据统计特征*/ sum logy h /*数据统计特征*/
*添加标签或更改变量名 label var h \人力资本\rename h hum
*排序
sort id year /*是以STATA面板数据格式出现*/ sort year id /*是以DEA格式出现*/
*删除个别年份或省份 drop if year<1992
drop if id==2 /*注意用==*/
*如何得到连续year或id编号(当完成上述操作时,year或id就不连续,为形成panel格式,需要用egen命令)
egen year_new=group(year) xtset id year_new
**保留变量或保留观测值 keep inv /*删除变量*/ **或
keep if year==2000
**排序
sort id year /*是以STATA面板数据格式出现 sort year id /*是以DEA格式出现
**长数据和宽数据的转换 *长>>>宽数据
reshape wide logy,i(id) j(year)
*宽>>>长数据
reshape logy,i(id) j(year)
**追加数据(用于面板数据和时间序列)
xtset id year *或者 xtdes
tsappend,add(5) /表示在每个省份再追加5年,用于面板数据/
tsset *或者 tsdes
.tsappend,add(8) /表示追加8年,用于时间序列/
*方差分解,比如三个变量Y,X,Z都是面板格式的数据,且满足Y=X+Z,求方差var(Y),协方差Cov(X,Y)和Cov(Z,Y)
bysort year:corr Y X Z,cov
**生产虚拟变量 *生成年份虚拟变量 tab year,gen(yr) *生成省份虚拟变量 tab id,gen(dum)
**生成滞后项和差分项 xtset id year
gen ylag=l.y /*产生一阶滞后项),同样可产生二阶滞后项*/ gen ylag2=L2.y
gen dy=D.y /*产生差分项*/
*求出各省2000年以前的open inv的平均增长率 collapse (mean) open inv if year<2000,by(id)
变量排序,当变量太多,按规律排列。可用命令 aorder 或者
order fdi open insti
*----------------- * 二、静态面板模型 *-----------------
*--------- 简介 -----------
* 面板数据的结构(兼具截面资料和时间序列资料的特征) use product.dta, clear browse
xtset id year xtdes
* --------------------------------- * -------- 固定效应模型 ----------- * ---------------------------------
* 实质上就是在传统的线性回归模型中加入 N-1 个虚拟变量, * 使得每个截面都有自己的截距项,
* 截距项的不同反映了个体的某些不随时间改变的特征 *
* 例如: lny = a_i + b1*lnK + b2*lnL + e_it * 考虑中国29个省份的C-D生产函数
*******-------画图------* *散点图+线性拟合直线
twoway (scatter logy h) (lfit logy h)
*散点图+二次拟合曲线
twoway (scatter logy h) (qfit logy h)
*散点图+线性拟合直线+置信区间
twoway (scatter logy h) (lfit logy h) (lfitci logy h)
*按不同个体画出散点图和拟合线,可以以做出fe vs re的初判断*
twoway (scatter logy h if id<4) (lfit logy h if id<4) (lfit logy h if id==1) (lfit logy h if id==2) (lfit logy h if id==3)
*按不同个体画散点图,so beautiful!!!*
graph twoway scatter logy h if id==1 || scatter logy h if id==2,msymbol(Sh) || scatter logy h if id==3,msymbol(T) || scatter logy h if id==4,msymbol(d) || , legend(position(11) ring(0) label(1 \北京\天津\河北\山西\
**每个省份logy与h的散点图,并将各个图形合并
twoway scatter logy h,by(id) ylabel(,format(%3.0f)) xlabel(,format(%3.0f))
*每个个体的时间趋势图*
xtline h if id<11,overlay legend(on)
* 一个例子:中国29个省份的C-D生产函数的估计 tab id, gen(dum) list
* 回归分析
reg logy logk logl dum*, est store m_ols
xtreg logy logk logl, fe est store m_fe
est table m_ols m_fe, b(%6.3f) star(0.1 0.05 0.01)
* Wald 检验
test logk=logl=0 test logk=logl
* stata的估计方法解析
* 目的:如果截面的个数非常多,那么采用虚拟变量的方式运算量过大 * 因此,要寻求合理的方式去除掉个体效应
* 因为,我们关注的是 x 的系数,而非每个截面的截距项 * 处理方法: *
* y_it = u_i + x_it*b + e_it (1)
* ym_i = u_i + xm_i*b + em_i (2) 组内平均 * ym = um + xm*b + em (3) 样本平均
* (1) - (2), 可得:
* (y_it - ym_i) = (x_it - xm_i)*b + (e_it - em_i) (4) /*within estimator*/ * (4)+(3), 可得:
* (y_it-ym_i+ym) = um + (x_it-xm_i+xm)*b + (e_it-em_i+em) * 可重新表示为:
* Y_it = a_0 + X_it*b + E_it
* 对该模型执行 OLS 估计,即可得到 b 的无偏估计量
**stata后台操作,揭开fe估计的神秘面纱!!!
egen y_meanw = mean(logy), by(id) /*个体内部平均*/ egen y_mean = mean(logy) /*样本平均*/ egen k_meanw = mean(logk), by(id) egen k_mean = mean(logk)
egen l_meanw = mean(logl), by(id) egen l_mean = mean(logl)
gen dyw = logy - y_meanw gen dkw = logk - k_meanw gen dlw=logl-l_meanw reg dyw dkw dlw,nocons est store m_stata
gen dy = logy - y_meanw + y_mean gen dk = logk - k_meanw +k_mean gen dl=logl-l_meanw+l_mean reg dy dk dl
est store m_stata
est table m_*, b(%6.3f) star(0.1 0.05 0.01)
* 解读 xtreg,fe 的估计结果
xtreg logy h inv gov open,fe *-- R^2
* y_it = a_0 + x_it*b_o + e_it (1) pooled OLS * y_it = u_i + x_it*b_w + e_it (2) within estimator * ym_i = a_0 + xm_i*b_b + em_i (3) between estimator *
* --> R-sq: within 模型(2)对应的R2,是一个真正意义上的R2 * --> R-sq: between corr{xm_i*b_w,ym_i}^2 * --> R-sq: overall corr{x_it*b_w,y_it}^2 *
*-- F(4,373) = 855.93检验除常数项外其他解释变量的联合显著性 * *