文档库 最新最全的文档下载
当前位置:文档库 › stata命令大全(全)

stata命令大全(全)

stata命令大全(全)
stata命令大全(全)

*********面板数据计量分析与软件实现*********

说明:以下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 "北京") label(2 "天津") label(3 "河北") label(4 "山西"))

**每个省份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检验除常数项外其他解释变量的联合显著性

*

*-- corr(u_i, Xb) = -0.2347

*

*-- sigma_u, sigma_e, rho

* rho = sigma_u^2 / (sigma_u^2 + sigma_e^2)

dis e(sigma_u)^2 / (e(sigma_u)^2 + e(sigma_e)^2)

*

* 个体效应是否显著?

* F(28, 373) = 338.86 H0: a1 = a2 = a3 = a4 = a29

* Prob > F = 0.0000 表明,固定效应高度显著

*---如何得到调整后的 R2,即 adj-R2 ?

ereturn list

reg logy h inv gov open dum*

*---拟合值和残差

* y_it = u_i + x_it*b + e_it

* predict newvar, [option]

/*

xb xb, fitted values; the default

stdp calculate standard error of the fitted values ue u_i + e_it, the combined residual

xbu xb + u_i, prediction including effect

u u_i, the fixed- or random-error component

e e_it, the overall error component */

xtreg logy logk logl, fe

predict y_hat

predict a , u

predict res,e

predict cres, ue

gen ares = a + res

list ares cres in 1/10

* ---------------------------------

* ---------- 随机效应模型 ---------

* ---------------------------------

* y_it = x_it*b + (a_i + u_it)

* = x_it*b + v_it

* 基本思想:将随机干扰项分成两种

* 一种是不随时间改变的,即个体效应 a_i

* 另一种是随时间改变的,即通常意义上的干扰项 u_it

* 估计方法:FGLS

* Var(v_it) = sigma_a^2 + sigma_u^2

* Cov(v_it,v_is) = sigma_a^2

* Cov(v_it,v_js) = 0

* 利用Pooled OLS,Within Estimator, Between Estimator

* 可以估计出sigma_a^2和sigma_u^2,进而采用GLS或FGLS

* Re估计量是Fe估计量和Be估计量的加权平均

* yr_it = y_it - theta*ym_i

* xr_it = x_it - theta*xm_i

* theta = 1 - sigma_u / sqrt[(T*sigma_a^2 + sigma_u^2)]

* 解读 xtreg,re 的估计结果

use product.dta, clear

xtreg logy logk logl, re

*-- R2

* --> R-sq: within corr{(x_it-xm_i)*b_r, y_it-ym_i}^2

* --> R-sq: between corr{xm_i*b_r,ym_i}^2

* --> R-sq: overall corr{x_it*b_r,y_it}^2

* 上述R2都不是真正意义上的R2,因为Re模型采用的是GLS估计。

*

* rho = sigma_u^2 / (sigma_u^2 + sigma_e^2)

dis e(sigma_u)^2 / (e(sigma_u)^2 + e(sigma_e)^2)

*

* corr(u_i, X) = 0 (assumed)

* 这是随机效应模型的一个最重要,也限制该模型应用的一个重要假设

* 然而,采用固定效应模型,我们可以粗略估计出corr(u_i, X)

xtreg market invest stock, fe

*

* Wald chi2(2) = 10962.50 Prob> chi2 = 0.0000

*-------- 时间效应、模型的筛选和常见问题

* 7.2.1 时间效应(双向固定(随机)效应模型)

* 7.2.2 模型的筛选

* 7.2.3 面板数据常见问题

* 7.2.4 面板数据的转换

* ----------------------------------

* ------------时间效应-------------- * ----------------------------------

* 单向固定效应模型

* y_it = u_i + x_it*b + e_it

* 双向固定效应模型

* y_it = u_i + f_t + x_it*b + e_it

qui tab year, gen(yr)

drop yr1

xtreg logy logk logl yr*, fe

* 随机效应模型中的时间效应

xtreg logy logk logl yr*, fe

* ---------------------------------

* ----------- 模型的筛选 ---------- * ---------------------------------

* 固定效应模型还是Pooled OLS?

xtreg logy logk logl yr*, fe /*Wald 检验*/

qui tab id, gen(dum) /*LR检验*/

reg logy logk logl /*POLS*/

est store m_ols

reg logy logk logl dum*,nocons

est store m_fe

lrtest m_ols m_fe

est table m_*, b(%6.3f) star(0.1 0.05 0.01)

* RE vs Pooled OLS?

* H0: Var(u) = 0

* 方法一:B-P 检验

xtreg logy logk logl, re

xttest0

* FE vs RE?

* y_it = u_i + x_it*b + e_it

*--- Hausman 检验 ---

* 基本思想:如果 Corr(u_i,x_it) = 0, Fe 和 Re 都是一致的,但Re更有效 * 如果 Corr(u_i,x_it)!= 0, Fe 仍然有效,但Re是有偏的

* 基本步骤

***情形1:huasman为正数

xtreg logy logk logl, fe

est store m_fe

xtreg logy logk logl, re

est store m_re

hausman m_fe m_re

*** 情形2:

qui xtreg logy h inv gov open,fe

est store fe

qui xtreg logy h inv gov open,re

est store re

hausman fe re

* Hausman 检验值为负怎么办?

* 通常是因为RE模型的基本假设 Corr(x,u_i)=0 无法得到满足

* 检验过程中两个模型的方差-协方差矩阵都采用Fe模型的

hausman fe re, sigmaless

* 两个模型的方差-协方差矩阵都采用Re模型的

hausman fe re, sigmamore

*== 为何有些变量会被drop掉?

use nlswork.dta, clear

tsset idcode year

xtreg ln_wage hours tenure ttl_exp, fe /*正常执行*/

* 产生种族虚拟变量

tab race, gen(dum_race)

xtreg ln_wage hours tenure ttl_exp dum_race2 dum_race3, fe

* 为何 dum_race2 和 dum_race3 会被 dropped ?

* 固定效应模型的设定:y_it = u_i + x_it*b + e_it (1)

* 由于个体效应 u_i 不随时间改变,

* 因此若 x_it 包含了任何不随时间改变的变量,

* 都会与 u_i 构成多重共线性,Stata会自动删除之。

*******异方差、序列相关和截面相关问题

---- 简介 -------------

* y_it = x_it*b + u_i + e_it

*

* 由于面板数据同时兼顾了截面数据和时间序列的特征,

* 所以异方差和序列相关必然会存在于面板数据中;

* 同时,由于面板数据中每个截面(公司、个人、国家、地区)之间还可能存在内在的联系,* 所以,截面相关性也是一个需要考虑的问题。

*

* 此前的分析依赖三个假设条件:

* (1) Var[e_it] = sigma^2 同方差假设

* (2) Corr[e_it, e_it-s] = 0 序列无关假设

* (3) Corr[e_it, e_jt] = 0 截面不相关假设

*

* 当这三个假设无法得到满足时,便分别出现异方差、序列相关和截面相关问题;

* 我们一方面要采用各种方法来检验这些假设是否得到了满足;

* 另一方面,也要在这些假设无法满足时寻求合理的估计方法。

* ---------------- 假设检验 -------------

*== 组间异方差检验(截面数据的特征)

* Var(e_i) = sigma_i^2

* Fe 模型

xtreg logy logk logl, fe

xttest3

* Re 模型

* Re本身已经较大程度的考虑了异方差问题,主要体现在sigma_u^2上

*== 序列相关检验

* Fe 模型

* xtserial Wooldridge(2002),若无序列相关,则一阶差分后残差相关系数应为-0.5 xtserial logy logk logl

xtserial logy logk logl, output

* Re 模型

xtreg logy logk logl, re

xttest1 /*提供多个统计检验量*/

*==截面相关检验

* xttest2命令 H0: 所有截面残差的相关系数都相等

xtreg logy logk logl, fe

xttest2

* 由于检验过程中执行了SUE估计,所以要求T>N

xtreg logy logk logl if id<6, fe

xttest2

* xtcsd 命令(提供了三种检验方法)

xtreg logy logk logl, fe

xtcsd , pesaran /*Pesaran(2004)*/

xtcsd , friedman /*Friedman(1937)*/

xtreg logy logk logl, re

xtcsd , pesaran

* ----------------- 估计方法 ---------------------

*== 异方差稳健型估计

xtreg logy h inv gov open, fe robust

est store fe_rb

xtreg logy h inv gov open, fe robust

est store fe

* 结果对比

esttab fe_rb fe, b(%6.3f) se(%6.3f) mtitle(fe_rb fe)

*== 序列相关估计

* 一阶自相关 xtregar, fe/re

* 模型: y_it = u_i + x_it*b + v_it (1)

* v_it = rho*v_it-1 + z_it (2)

xtregar logy h inv gov open, fe

est store fe_ar1

xtregar logy h inv gov open,fe lbi /*Baltagi-Wu LBI test*/

* 说明:

* (1) 这里的Durbin-Watson =1.280677 具有较为复杂的分布,

* 不同于时间序列中的D-W统计量。

* (2) 其临界值见Bhargava et al. (1982, The Review of Economic Studies 49:553-549) * (3) Baltagi-Wu LBI = 1.4739834 基本上没有太大的参考价值,

* 因为他们并未提供临界值表,而该统计量的分布又相当复杂

xtregar logy h inv gov open, re

est store re_ar1

* 两阶段估计

xtregar logy h inv gov open, fe twostep

est store fe_ar1_two

* 结果对比

xtreg logy h inv gov open, fe

est store fe

local models "fe fe_ar1 re_ar1 fe_ar1_two "

esttab `models', b(%6.3f) se(%6.3f) mtitle(`models') r2 sca(r2_w corr)

* 高阶自相关

* newey2 命令

newey2 logy h inv gov open, lag(2)

*== 组间相关(截面相关)

* cluster 选项

use xtcs.dta, clear

xtreg logy h inv gov open, fe cluster(id)

est store fe_cluster

xtreg logy h inv gov open, re cluster(id)

est store re_cluster

************看过去很晕,采用一种综合处理:

* xtgls 命令

* xtpcse 命令

*--- 简介(Greene, 2000, chp15)

*

* 模型

* y = X*b + U

* 重点在于考虑干扰项 U 的结构,包括

* (1) 异方差 (2) 序列相关 (3) 截面相关性

* 应用范围:多用于“大T,小N”型面板数据,

* 因为,此时截面的异质性并不是重点关注的,而时序特征则较为明显

* 因此,模型设定中未考虑个体效果

*--- 估计和检验 -------------

*=== xtgls 命令

use invest2.dta, clear

xtgls market invest stock, panels(iid) /*iid, 等同于Pooled OLS*/

est store g_0

reg market invest stock

est store g_ols

xtgls market invest stock, panel(het) /*截面异方差*/

est store g_phet

xtgls market invest stock, corr(ar1) /*所有截面具有相同的自相关系数*/

est store g_par1

xtgls market invest stock, corr(psar1) /*每个截面有自己的自相关系数*/

est store g_psar1

xtgls market invest stock, panel(corr) /*截面间相关且异方差*/

est store g_pcorr

xtgls market invest stock, p(c) corr(ar1)

est store g_all

* 检验异方差

xtgls market invest stock, panel(het) /*截面异方差*/

xttest3

* 检验序列相关

xtserial market invest stock

* 检验截面相关

xtgls market invest stock, panel(het)

xttest2

* 结果对比

xtreg market invest stock, fe

est store fe

local models "fe g_0 g_ols"

esttab `models', b(%6.3f) se(%6.3f) mtitle(`models') r2 sca(r2_w)

local models "fe g_phet g_par1 g_psar1 g_pcorr g_all"

esttab `models', b(%6.3f) se(%6.3f) mtitle(`models') r2 sca(r2_w) compress

* 说明:

* 为何 xtgls 不汇报 R2 ?

* 因为此时的R2未必介于0和1之间,不具有传统线性回归模型中R2的含义

*=== xtpcse 命令

* 默认假设:存在截面异方差和截面相关

* 估计方法:OLS 或 Prais-Winsten 回归

* 有别于xtgls(采用FGLS估计)

* 更适于方块面板 N不大(10-20),T不大(10-40)

* 与 xtgls 的区别:估计方法不同

* xtgls 采用GLS进行估计,而xtpsce采用OLS。

use invest2.dta, clear

xtpcse invest market stock

est store pcse_full /*OLS估计,调整异方差和截面相关后的标准误*/

xtgls invest market stock, panels(correlated)

est store m_xtgls /*FGLS估计,异方差和截面相关*/

xtpcse invest market stock, correlation(ar1)

est store pcse_ar1 /*Prais_Winsten估计,共同的自相关系数*/

xtpcse invest market stock, correlation(ar1) hetonly

est store pcse_ar1 /*不考虑截面相关*/

* 结果对比

xtreg invest market stock, fe

est store fe

local models "fe pcse_full m_xtgls pcse_ar1 pcse_ar1"

esttab `models', b(%6.3f) se(%6.3f) mtitle(`models') r2 sca(r2_w) * xtpcse 的结果与 xtgls 非常相似,但前者可以汇报R2

* 当N较大时,采用该方法会非常费时,

* 因为方差协方差矩阵是采用OLS估计的残差计算的

use xtcs.dta, clear

xtdes

xtpcse tl size ndts tang tobin npr /*大约5-8分钟*/

est store xtpcse

xtreg tl size ndts tang tobin npr, fe

est store fe

* 结果对比

local models "fe xtpcse"

esttab `models', b(%6.3f) se(%6.3f) mtitle(`models') r2 sca(r2_w) * 系数估计值有较大差别,但符号和显著性是一致的。

***------动态面板模型 Part I

* 动态面板模型

* 简介

* 一阶差分IV估计量(Anderson and Hisao, 1982)

* 一阶差分GMM估计量(Arellano and Bond, 1991)

* 系统GMM估计量(AB,1995; BB,1998)

* == 简介 ==

*

* 模型: y[it] = a0*y[it-1] + a1*x[it] + a2*w[it] + u_i + e[it]

* 特征:解释变量中包含了被解释变量的一阶滞后项

* 可以是非平行面板,但要保证时间连续

* x[it] ——严格外生变量 E[x_it,e_is] =0 for all t and s

* 即,所有干扰项与x都不相关

* w[it] ——先决变量 E[w_it,e_is]!=0 for s=t * 即,前期干扰项与当期x相关,但当期和未来期干扰项与x不相关。

* y[it-1]——内生变量 E[x_it,e_is]!=0 for s<=t

* 即,前期和当期,尤其是当期干扰项与x相关

* u_i 随机效应,在截面间是 iid 的。u_i 与 e[it] 独立。

*

* 内生性问题:

* (1) 若假设 u_i 为随机效应,则 Corr(y[i,t-1], u_i) !=0

* (2) 若假设 u_i 为个体效应,需要想办法去除之,因为数据为"大N小T"

* 一阶差分: D.y[i,t-1] = y[i,t-1] - y[i,t-2]

* D.e[i,t] = e[i,t] - e[i,t-1]

* 显然: Corr(D.y[i,t-1], D.e[i,t]) !=0, 差分方程存在内生问题;

* 组内去心: ym[i,t-1] = y[i,t-1] - 1/(T-1)*(y[i,t-1]+...+y[i,T])

* em[i,t] = e[i,t] - 1/T*(e[i,t]+e[i,t-1]+...+e[i,T])

* 显然: Corr(ym[i,t-1], em[i,t]) !=0, 仍然存在内生性问题

*

* 处理办法:IV估计或GMM估计,选择合适的工具变量

*

* 矩条件: E[e_it,z_it] = 0

*========================================

*========= 一阶差分 IV 估计量 ============

*========Anderson and Hisao(1982)========

*

* 基本思想:采用一阶差分去除个体效应 u_i,

* y 的滞后二阶作为 D.y[it-1] 的工具变量

* 同时,D.y[it-2] 也可以作为 D.y[it-1] 的工具变量

use abdata.dta, clear

des /*变量的定义*/

tsset id year

* 模型: n_it = b1*n_it-1 + b2*n_it-2

* + b3*w_it + b4*w_it-1

* + b5*k_it + b6*k_it-1 + b7*k_it-2

* + b8*ys_it + b9*ys_it-1 + b10*ys_it-2

*

xtivreg n L2.n w L1.w k L1.k L2.k ys L1.ys L2.ys yr1981-yr1984 ///

(L.n = L3.n), fd

*

* 等价于

*

xtivreg n L2.n L(0/1).w L(0/2).(k ys) yr1981-yr1984 (L.n = L3.n), fd

*====================================

*========= 一阶差分GMM估计量 =========

*==============AB91==================

*

* L.Hansen (1982) 提出 GMM

*

* Arellano and Bond (1991)

*

* 模型:

* y[it] = a0*y[it-1] + a1*x[it] + a2*w[it] + u_i + v[it]

* 假设条件:

* 干扰项 v[it] 不存在序列相关;

*

* 适用范围:

* 大N,小T

* 随后,我们会介绍“小N大T”型动态面板的估计方法

* 基本思想:

* 在 Anderson and Hisao(1982) 基础上增加了更多可用的工具变量

* 在 t=3 处,y_i1 可以作为所有滞后项的工具变量

* 在 t=4 处, y_i1, y_i2 可以作为所有滞后项的工具变量

* D.y[it] = a1*D.y[it-1] + a2*D.X[it] + D.v[it] X_it = [x_it, w_it]

* 因此,所有工具变量构成的矩阵如下:*

* Z_i 的行数为 T-2

* Z_i 的列数为 sum_(m=1)^(T-2){m} + K, K 为 X 的列数

* 以 T =7,K=3 为例,则 Z_i 的列数为 (1+2+3+4+5)+3 = 18

*

* 设定工具变量的基本原则:

*

* 对-内生-变量的处理:与上述方法类似,

* 即滞后两阶以上的水平变量均可作为差分方程的工具变量 (GMM type)

* 对-先决-变量的处理:滞后一阶以上的水平变量均可作为工具变量 (GMM type)

* 对-外生-变量的处理:自己作为自己的工具变量 (Standard IV)

*== 例1:一阶差分估计量的基本设定

* 解释变量仅包含 y_it 的一阶滞后项,默认设定

* 干扰项同方差,一阶段估计

use abdata.dta, clear

xtabond n L(0/1).w L(0/2).(k ys) yr1980-yr1984

est store ab_0

*- 结果释疑

*

* -1- 工具变量的个数是如何确定的?(xtdpd, p.74)

*

* 外生变量的工具变量等于外生变量的个数

* L(0/1).w L(0/2).(k ys) yr1980-yr1984 共 13个

* 内生变量的工具变量:共 27个

*

list id year n L2.n DL2.n if id == 140

*

* 差分方程的可用工具变量

*--------------------------------------------------------

* year of Years of Number of

* difference equation instruments instruments

* 1978 1976 1

* 1979 1976-1977 2

* 1980 1976-1978 3

* 1981 1976-1979 4

* 1982 1976-1980 5

* 1983 1976-1981 6

* 1984 1976-1982 7

*--------------------------------------------------------

*

* -2- GMM-type 和 Standard 两种类型的工具变量有何差异?(xtabond,p.27) *

* GMM-type 是针对内生变量或先决变量而言的工具变量,有多列

* Standard 是针对外生变量而言的工具变量,只有一列

*- 过度识别检验(工具变量的使用是否合理)

estat sargan

* 说明:

* H0: overidentifying restrictions are valid

* 这里,我们拒绝了原假设,但AB91指出,当干扰项存在异方差时,

* Sargan检验倾向于过度拒绝原假设,因此此处得到的结论并不可信。

* 采用两阶段估计,然后再执行Sargan检验较为稳妥:

*

xtabond n L(0/1).w L(0/2).(k ys) yr1980-yr1984,twostep

estat sargan

*

* 说明:不过,AB91发现,

* 若存在异方差,在两阶段估计后执行Sargan检验往往倾向于

* Underreject问题,即过度接受原假设。

* 通常而言,这很可能是我们的模型设定不当,或是工具变量的选择不合理。

* - 干扰项序列相关检验

*

* AB91 一阶差分估计量要求原始模型的干扰项不存在序列相关,

* 显然,差分后的干扰项必然存在一阶序列相关,

* 因此,我们需要检验差分方程的残差是否存在二阶(或更高阶)序列相关即可

*

* 默认,二阶序列相关检验

xtabond n L(0/1).w L(0/2).(k ys) yr1980-yr1984,vce(robust)

estat abond

* 说明:若存在二阶相关,则意味着选取的工具变量不合理

* 高阶序列相关检验

xtabond n L(0/1).w L(0/2).(k ys) yr1980-yr1984,vce(robust) artest(3) estat abond

*== 稳健型估计

xtabond n L(0/1).w L(0/2).(k ys) yr1980-yr1984, lags(2) robust

est store ab4_one_rb

* 此时,无法 Sargan 统计量

estat sargan

*== 两阶段估计 AB91(Tab4(a2)) 考虑异方差问题

* 利用第一阶段估计得到的残差构造方差-协方差矩阵,进而重新估计模型

*

xtabond n L(0/1).w L(0/2).(k ys) yr1980-yr1984, lags(2) twostep

est store ab4_twostep

* 此时,Sargan 检验无法拒绝原假设

*

estat sargan

* AB91重要建议:

* (1) 采用一阶段估计结果进行系数显著性的统计推断;

* (2) 采用两阶段估计给出的 Sargan统计量进行模型筛选

*

* 进一步的讨论:

* 虽然AB91建议不要采用两阶段(非稳健)估计进行统计推断,

* 但Windmeijer(2005,Journal of Econometrics)通过模拟分析表明,

* 采用纠偏(bias-corrected,WC)后的稳健性VCE,可以更好地进行统计推断

xtabond n L(0/1).w L(0/2).(k ys) yr1980-yr1984, lags(2) twostep vce(robust)

est store ab_wc_rb

* 结果对比

local mm "ab4_one_rb ab4_twostep ab_wc_rb"

esttab `mm',mtitle(`mm')

*

* 结论:

* AB91_onestep_rb 的结果与 AB91_WC_rb 的参数估计相同,后者标准误较大

* 建议采用 Windmeijer(2005) 两阶段-纠偏-稳健型估计量。

*== 先决变量的设定

* 由于当期干扰项显然会影响后续 w 和 k,所以把它们设定为先决变量更为合理

* 注意: 此时逗号前就不能再出现这两个变量了

xtabond n L(0/1).ys yr1980-yr1984, lags(2) twostep ///

pre(w k)

est store ab4_pre

estat sargan

* 从 Sargan p值来看,将 w 和 k 设为先决变量似乎更为合理

* pre() 选项的设定

xtabond n L(0/1).ys yr1980-yr1984, lags(2) twostep ///

pre(w,lag(1,3)) pre(k,lag(2,.))

*

* 解释:

* pre(w,lag(1,3))

* lag(1,3) 中的 1 表示 L.w 也会作为解释变量,

* lag(1,3) 中的 3 表示 L2.w 和 L3.w 可以作为 L.w 的工具变量,但 L4.w 不可以; * pre(k,lag(2,.))

* lag(2,.) 中的 2 表示 L1.k, L2.k 都会作为解释变量;

* lag(2,.) 中的 . 表示 L3.k, L4.k ... 都可以作为 L2.k 的工具变量

* 说明:上述设定都可附加 -vce(robust)- 选项以便获得稳健型标准误。

*== 工具变量过多导致的问题

* 过多的工具变量往往导致过度约束假设无法满足

* 估计结果的有效性降低,因为部分工具变量与内生或先决变量的相关性很弱

* 对矩阵尺寸的要求增加

* 解决办法:限制最大的滞后阶数

xtabond n L(0/1).ys yr1980-yr1984, lags(2) twostep ///

pre(w,lag(1,3)) pre(k,lag(2,3))

*== 系数估计的上下限

* 虽然 Pooled OLS 和 Fixed Effects 估计都是有偏的,

* 但是二者却决定了 y_it-1 真是估计值的上界和下界

* 换言之, Pooled OLS 估计高估了真实值

* 而 Fixed effects 估计则低估了真实值

*=======================================

*============= 系统GMM估计量 ===========

*==============AB95,BB98===============

*=======================================

* Arellano and Bover (1995),

* Blundell and Bond(1998)

* Haha(1999), Judson and Owen(1999)

* 适用范围:

* 大N,小T

*

* AB91 的局限

* (1) 当 y[i,t-1] 的系数较大,即 y[i,t] 表现出强烈的序列相关时;

* (2) 当 Var[u_i]/Var[e_it] 较大时,即个体效应的波动远大于常规干扰项的波动;* AB91 的表现欠佳。

* 原因在于,水平滞后项是差分方程中内生变量的-弱工具变量-;

* 因此,需要寻求更佳的工具变量

*

*== 基本思想:

*

* --- 几个概念 ---

*

* 水平值—— y x

* 差分值—— D.y D.x

* 水平方程:y_it = b1*y_it-1 + b2*x_it + u_i + v_it

* 可用工具变量:D.y[i,t-1] 可以作为 y[i,t-1] 的工具变量

* 差分方程:D.y_it = b1*D.y_it-1 + b2*D.x_it + D.v_it

* 可用工具变量:y[i,t-2],y[i,t-3]...都可以作为 D.y[i,t-1]的工具变量

*

* --- 差分GMM估计量与系统GMM估计量的区别 ---

*

* (1) 差分GMM估计量采用水平值的滞后项作为差分变量的工具变量;

* 如 y_it-3 是 D.y_it-1 的工具变量

* (2) 系统GMM估计量进一步采用差分变量的滞后项作为水平值的工具变量;

* 相当于进一步增加了可用的工具变量,

* 且估计过程中同时使用水平方程和差分方程

* (3) 主要原因在于差分GMM的工具变量往往是弱工具变量,即 corr(X,Z) 过低

*

* --- xtabond2 命令---Roodman(2005)

*

* 既可以估计差分 GMM 估计量,也可以估计系统 GMM 估计量;

* 同时可以估计一般化的回归模型

* 提供两阶自相关检验,Sargan检验,Hansen检验,以及工具变量外生性检验

*

* --- xtdpdsys 命令--- Stata官方命令,以 xtabond2命令为基础

*------------------------------------

*---------- xtabond2 命令------------

*------------------------------------

* 适用于 Stata8-10 各个版本

* 既可以完成 -一阶差分GMM估计-

* 也可以完成 -系统GMM估计-

* 详细参考资料:

* Roodman, D. 2006. How to Do xtabond2:

* An Introduction to "Difference" and "System" GMM in Stata.

* Working Paper 103. Center for Global Development, Washington.

*== 使用 xtabond2 命令得到 -一阶差分估计量- *- 附加 -noleveleq- 选项即可

* 采用 xtabond2 估计 AB91 文中表4 的结果

* Arellano and Bond (1991), Table 4

* Column (a1)

use abdata, clear

xtabond2 n L(1/2).n L(0/1).w L(0/2).(k ys) yr1980-yr1984, ///

gmm(L.n) iv(L(0/1).w l(0/2).(k ys) yr1980-yr1984) ///

nomata noleveleq small

* gmm(*) 填写内生变量的名称

* iv(*) 填写所有外生变量以及自己设定的工具变量的名称

* noleveleq 表示估计过程中不使用水平方程,即为差分GMM估计量

est store aba1_ab2

xtabond n L(0/1).w L(0/2).(k ys) yr1980-yr1984, lags(2)

est store aba1_ab

esttab aba1_ab2 aba1_ab, mtitle(aba1_ab2 aba1_ab)

* Column (a2)

* 两阶段估计

xtabond2 n L(0/1).w L(0/2).(k ys) L(1/2).n yr1980-yr1984, ///

gmm(L.n) iv(L(0/1).w l(0/2).(k ys) yr1980-yr1984) ///

noleveleq small twostep

est store aba2_ab2

xtabond n L(0/1).w L(0/2).(k ys) yr1980-yr1984, lags(2) twostep

est store aba2_ab

esttab aba2_ab2 aba2_ab, mtitle(aba2_ab2 aba2_ab)

*=== 一阶差分估计量部分解释变量内生 * 一阶段估计

xtabond2 n L.n L(0/1).(w k) yr1980-yr1984, ///

gmm(L.(w k n)) iv(yr1980-yr1984) ///

noleveleq noconstant small robust

est store fd_1s

* 两阶段估计

xtabond2 n L.n L(0/1).(w k) yr1980-yr1984, ///

gmm(L.(w k n)) iv(yr1980-yr1984) ///

noleveleq robust small twostep

est store fd_2s

esttab fd_1s fd_2s, mtitle(fd_1s fd_2s)

*== 系统 GMM 估计量

xtabond2 n L.n L(0/1).(w k) yr1978-yr1984, ///

gmm(L.n) iv(L(0/1).(w k) yr1978-yr1984) ///

robust small

* 解释:*

*-- gmm() 选项

* 设定内生变量和先决变量,它们的工具变量将有多列,GMM

*

*-- iv() 选项

* 设定严格外生变量,作为自己的工具变量,在工具变量矩阵中仅占一列

*

*-- 差分方程和水平方程

* 默认情况下,差分方程和水平方程都参与估计

*-- robust 选项

* (1) 对于一阶段估计(不附加twostep选项),

* 采用传统异方差-序列相关稳健型估计量计算标准误;

* (2) 对于两阶段估计(附加twostep选项),

* 采用Windmeijer(2005)纠偏估计量计算标准误;

*-- Sargan检验

* Sargan test of overid. restrictions: chi2(34)

* 34 = 47 - 13 (13是外生变量的个数,包含常数项)

* 可见,无论采用Sargan检验还是Hansen J检验,都拒绝了工具变量合理的原假设

* 指定工具变量应用于水平方程还是差分方程

* 例如,假设 w, k, 以及年度虚拟变量都是外生的(当然,这一假设可能并不合理)

xtabond2 n L.n L(0/1).(w k) yr1978-yr1984, gmm(L.n) ///

iv(L(0/1).(w k) yr1978-yr1984, eq(level)) ///

robust small twostep

est store sys_wkexg

* 将 w 和 k 都设定为内生变量

* yr dummies 仅出现在水平方程中

xtabond2 n L.n L(0/1).(w k) yr1978-yr1984, ///

gmm(L.(w k n)) iv(yr1978-yr1984, eq(level)) ///

robust small twostep

est store sys_wkendog_lev

* yr dummies 同时出现在水平方程和差分方程中

xtabond2 n L.n L(0/1).(w k) yr1978-yr1984, ///

gmm(L.(w k n)) iv(yr1978-yr1984, eq(both)) ///

robust small twostep

est store sys_wkendog_both

* 结果对比

local mm "fd_1s fd_2s sys_wkexg sys_wkendog_lev sys_wkendog_both"

esttab `mm', mtitle(`mm') compress

*---------------------------

*------ xtdpdsys 命令------

*---------------------------

* 仅适用于 Stata10 版本

* 中国上市公司资本结构动态调整

use xtcs.dta, clear

qui tab year, gen(yr)

drop yr1

* Case I:假设所有解释变量均为外生变量(L.tl除外)

*

local xx "size tang ndts L(0/1).tobin L(0/1).npr yr*"

xtdpdsys tl `xx', vce(robust) twostep

dis ln(2) / (1 - _b[L1.tl]) /*调整半周期*/

est store dycs_2sys

* 设定说明:

* (1) 无需设定 L.tl, 因为 xtdpdsys 默认设定被解释变量的滞后一期为解释变量, * 而且该变量被自动设定为内生变量;

* (2) 稳健型估计采用 vce(robust) 选项加以设定;

* (3) 该命令不会自动进行 AR(2)序列相关检验和Sargan过度识别检验

* 序列相关检验

estat abond

* 过度识别检验

estat sargan /*稳健型估计下无法获得Sargan统计量*/

* 正确方法

local xx "size tang ndts L(0/1).tobin L(0/1).npr yr*"

xtdpdsys tl `xx', twostep

estat sargan

* Case II:假设Tobin和npr为先决变量

local xx "size tang ndts yr*" /*此处不应再包含 tobin和npr*/

xtdpdsys tl `xx', pre(tobin npr,lag(1,.)) twostep

est store dycs_2pre

estat abond

estat sargan

* Case III:假设Tobin和npr为内生变量

local xx "size tang ndts yr*" /*此处不应再包含 tobin和npr*/

xtdpdsys tl `xx', endog(tobin npr,lag(1,.)) twostep

est store dycs_2endog

estat abond

estat sargan

* Case IV: 假设除了年度虚拟变量和公司规模外,所有解释变量均为先决变量

local xx "size yr*"

xtdpdsys tl `xx', pre(tobin npr,lag(1,.)) ///

pre(tang ndts) twostep

est store dycs_2preAll

estat abond

estat sargan

* 假设除 L.tl 外的所有解释变量外生最为合适。

* OLS 估计(调整系数的上限)

local xx "size tang ndts L(0/1).tobin L(0/1).npr yr*"

reg tl L.tl `xx', robust

est store dycs_2OLS

* FE 估计(调整系数的下限)

local xx "size tang ndts L(0/1).tobin L(0/1).npr yr*"

xtreg tl L.tl `xx', robust fe

est store dycs_2FE

* 结果对比

local mm "dycs_2sys dycs_2pre dycs_2endog dycs_2preAll dycs_2OLS dycs_2FE" local ss "ar2 ar2p sargan sar_df sarganp"

esttab `mm',mtitle(`mm') scalar(`ss') compress

* 结论:

* (1) 估计出的调整系数介于合理的范围内,即OLS和FE之间;

* (2) 就模型设定而言,dycs_2sys 最为合理,即把所有解释变量均设定为外生变量。 *

* 调整半周期为:

local xx "size tang ndts L(0/1).tobin L(0/1).npr yr*"

xtdpdsys tl `xx', vce(robust) twostep

dis ln(2) / (1 - _b[L1.tl]) /*调整半周期*/

xtabond2 logy l.logy h inv gov open fdi yr4-yr14, ///

gmm(l.logy h) iv(gov open fdi yr4-yr14)robust twostep

stata命令总结

stata11常用命令 注:JB统计量对应的p大于0.05,则表明非正态,这点跟sktest和swilk 检验刚好相反; dta为数据文件; gph为图文件; do为程序文件; 注意stata要区别大小写; 不得用作用户变量名: _all _n _N _skip _b _coef _cons _pi _pred _rc _weight double float long int in if using with 命令: 读入数据一种方式 input x y 1 4 2 5.5 3 6.2 4 7.7 5 8.5 end su/summarise/sum x 或 su/summarise/sum x,d 对分组的描述: sort group by group:su x %%%%% tabstat economy,stats(max) %返回变量economy的最大值 %%stats括号里可以是:mean,count(非缺失观测值个数),sum(总和),max,min,range, %% sd,var,cv(变易系数=标准差/均值),skewness,kurtosis,median,p1(1%分位 %% 数,类似地有p10, p25, p50, p75, p95, p99),iqr(interquantile range = p75 – p25) _all %描述全部 _N 数据库中观察值的总个数。 _n 当前观察值的位置。 _pi 圆周率π的数值。 list gen/generate %产生数列 egen wagemax=max(wage) clear use by(分组变量)

STATA最常用命令大全

stata save命令 FileSave As 例1. 表1.为某一降压药临床试验数据,试从键盘输入Stata,并保存为Stata格式文件。 STATA数据库的维护 排序 SORT 变量名1 变量名2 …… 变量更名 rename 原变量名新变量名 STATA数据库的维护 删除变量或记录 drop x1 x2 /* 删除变量x1和x2 drop x1-x5 /* 删除数据库中介于x1和x5间的所有变量(包括x1和x5) drop if x<0 /* 删去x1<0的所有记录 drop in 10/12 /* 删去第10~12个记录 drop if x==. /* 删去x为缺失值的所有记录 drop if x==.|y==. /* 删去x或y之一为缺失值的所有记录 drop if x==.&y==. /* 删去x和y同时为缺失值的所有记录 drop _all /* 删掉数据库中所有变量和数据 STATA的变量赋值 用generate产生新变量 generate 新变量=表达式 generate bh=_n /* 将数据库的内部编号赋给变量bh。 generate group=int((_n-1)/5)+1 /* 按当前数据库的顺序,依次产生5个1,5个2,5个3……。直到数据库结束。 generate block=mod(_n,6) /* 按当前数据库的顺序,依次产生1,2,3,4,5,0。generate y=log(x) if x>0 /* 产生新变量y,其值为所有x>0的对数值log(x),当x<=0时,用缺失值代替。 egen产生新变量 set obs 12 egen a=seq() /*产生1到N的自然数 egen b=seq(),b(3) /*产生一个序列,每个元素重复#次 egen c=seq(),to(4) /*产生多个序列,每个序列从1到# egen d=seq(),f(4)t(6) /*产生多个序列,每个序列从#1到#2 encode 字符变量名,gen(新数值变量名) 作用:将字符型变量转化为数值变量。 STATA数据库的维护 保留变量或记录 keep in 10/20 /* 保留第10~20个记录,其余记录删除 keep x1-x5 /* 保留数据库中介于x1和x5间的所有变量(包括x1和x5),其余变量删除keep if x>0 /* 保留x>0的所有记录,其余记录删除

Stata命令整理教学内容

Stata 命令语句格式: [by varlist:] command [varlist] [=exp] [if exp] [in range] [weight] [, options] 1、[by varlist:] *如果需要分别知道国产车和进口车的价格和重量,可以采用分类操作来求得, sort foreign //按国产车和进口车排序 . by foreign: sum price weight *更简略的方式是把两个命令用一个组合命令来写。 . by foreign, sort: sum price weight 如果不想从小到大排序,而是从大到小排序,其命令为gsort。 . sort - price //按价格从高到低排序 . sort foreign -price /*先把国产车都排在前,进口车排在后面,然后在国产车内再按价格从大小到排序,在进口车内部,也按从大到小排序*/ 2、[=exp]赋值运算 . gen nprice=price+10 //生成新变量nprice,其值为price+10 /*上面的命令generate(略写为gen) 生成一个新的变量,新变量的变量名为 nprice,新的价格在原价格的基础上均增加了10 元。 . replace nprice=nprice-10 /*命令replace 则直接改变原变量的赋值,nprice 调减后与price 变量取值相等*/ 3、[if exp]条件表达式 . list make price if foreign==0 *只查看价格超过1 万元的进口车(同时满足两个条件),则 . list make price if foreign==1 & price>10000 *查看价格超过1 万元或者进口车(两个条件任满足一个) . list make price if foreign==1 | price>10000 4、[in range]范围筛选 sum price in 1/5 注意“1/5”中,斜杠不是除号,而是从1 到 5 的意思,即1,2,3,4,5。 如果要计算前10 台车中的国产车的平均价格,则可将范围和条件筛选联合使用。 . sum price in 1/10 if foreign==0 5、[weight] 加权 sum score [weight=num] 其中,num为每个成绩所对应的人数 6、[, options]其他可选项 例如,我们不仅要计算平均成绩,还想知道成绩的中值,方差,偏度和峰度等*/ . sum score, detail . sum score, d //d 为detail 的略写,两个命令完全等价 . list price, nohead //不要表头 Stata 数据类型转换 1、字符型转化成数值型 destring, replace //全部转换为数值型,replace 表示将原来的变量(值)更新 destring date, replace ignore(“ ”) 将字符型数据转换为数值型数据:去掉字符间的空格destring price percent, gen(price2 percent2) ignore(“$ ,%”) 与date 变量类似,变量price 前面有美元符号,变量percent 后有百分号,换为数值型时需要忽略这些非数值型字符 2、数值型转化为字符型

(完整)stata命令总结,推荐文档

stata11 常用命令 注:JB统计量对应的p大于0.05 ,则表明非正态,这点跟sktest 和 swilk 检验刚好相反;dta 为数据文件;gph 为图文件;do 为程序文件;注 意stata 要区别大小写;不得用作用户变量名: _all _n _N _skip _b _coef _cons _pi _pred _rc _weight double float long int in if using with 命令:读入数据一种方式 input x y 14 2 5.5 3 6.2 47.7 58.5 end su/summarise/sum x 或su/summarise/sum x,d 对分组的描述: sort group by group:su x %%%%% tabstat economy,stats(max)%返回变量economy的最大值 %%stats括号里可以是:mean,count(非缺失观测值个数),sum(总 和),max,min,range , %% sd ,var ,cv(变易系数=标准差/ 均值),skewness,kurtosis , median,p1(1 %分位 %% 数,类似地有p10, p25, p50, p75, p95, p99),iqr(interquantile range = p75 –p25) _all %描述全部 _N 数据库中观察值的总个数。 _n 当前观察值的位置。 _pi 圆周率π 的数值。 list gen/generate % 产生数列egen wagemax=max(wage) clear use by(分组变量)

stata常用命令

用help命令熟悉以下命令的功能: cd:(Change directory)改变stata的工作路径 用法:(cd changes the current working directory to the specified drive and directory.) ●指定全路径:cd e:\ ●指定相对路径(如果当前路径已经指向e:\那么下面命令将达到和上面全路 径命令同样效果): ●cd .. 返回上一级目录 dir:(Display filenames)显示当前目录下的文件信息 用法:(list the names of files in the specified,the names of the commands come from names popular on Unix and Windows,filespec may be any valid Mac, Unix, or Windows file path or file)工作列表文件中指定的名称目录,命令的名称来自名字流行的Unix和Windows文件规范可以是任何有效的Mac,Unix或Windows文件路径或文件。 . dir, w . dir *.dta . dir \mydata\*.dta List:(List values of variables)列出指定变量的取值 用法:(st displays the values of variables. If no varlist is specified, the values of all the variables are displayed)列表显示变量的值。如果没有指定varlist,所有的值显示的变量。list [varlist] [if] [in] [, options] . list in 1/10 . list mpg weight . list mpg weight in 1/20 . list if mpg>20 . list mpg weight if mpg>20 . list mpg weight if mpg>20 in 1/10 Describe:(Describe data in memory or in file)描述内存或者文件中的数 据(样本数、变量类型等信息) 用法:(describe produces a summary of the dataset in memory or of the data stored in a Stata-format dataset. For a compact listing of variable names, use describe, simple.) ●描述内存数据: ●描述文件数据:describe [varlist] using filename [, file_options] Use:(Load Stata dataset)调用数据,打开数据文件(以dta结尾)文 件名+.dta 数据读入stata 用法:(use loads into memory a Stata-format dataset previously saved by save. If filename is specified without an extension, .dta is assumed. If your

[推荐] stata基本操作汇总常用命令

[推荐] Stata基本操作汇总——常用命令 help和search都是查找帮助文件的命令,它们之间的 区别在于help用于查找精确的命令名,而search是模糊查找。 如果你知道某个命令的名字,并且想知道它的具体使用方法,只须在stata的命令行窗口中输入help空格加上这个名字。回车后结果屏幕上就会显示出这个命令的帮助文件的全部 内容。如果你想知道在stata下做某个估计或某种计算,而 不知道具体该如何实现,就需要用search命令了。使用的 方法和help类似,只须把准确的命令名改成某个关键词。回车后结果窗口会给出所有和这个关键词相关的帮助文件名 和链接列表。在列表中寻找最相关的内容,点击后在弹出的查看窗口中会给出相关的帮助文件。耐心寻找,反复实验,通常可以较快地找到你需要的内容.下面该正式处理数据了。我的处理数据经验是最好能用stata的do文件编辑器记下你做过的工作。因为很少有一项实证研究能够一次完成,所以,当你下次继续工作时。能够重复前面的工作是非常重要的。有时因为一些细小的不同,你会发现无法复制原先的结果了。这时如果有记录下以往工作的do文件将把你从地狱带到天堂。因为你不必一遍又一遍地试图重现做过的工作。在stata 窗口上部的工具栏中有个孤立的小按钮,把鼠标放上去会出

现“bring do-file editor to front”,点击它就会出现do文件编 辑器。 为了使do文件能够顺利工作,一般需要编辑do文件的“头”和“尾”。这里给出我使用的“头”和“尾”。capture clear (清空内存中的数据)capture log close (关闭所有 打开的日志文件)set more off (关闭more选项。如果打开该选项,那么结果分屏输出,即一次只输出一屏结果。你按空格键后再输出下一屏,直到全部输完。如果关闭则中间不停,一次全部输出。)set matsize 4000 (设置矩阵的最大阶数。我用的是不是太大了?)cd D: (进入数据所在的盘符和文件夹。和dos的命令行很相似。)log using (文件名).log,replace (打开日志文件,并更新。日志文件将记录下所有文件运行后给出的结果,如果你修改了文件内容,replace选项可以将其更新为最近运行的结果。)use (文件名),clear (打开数据文件。)(文件内容)log close (关闭日志文件。)exit,clear (退出并清空内存中的数据。) 实证工作中往往接触的是原始数据。这些数据没有经过整理,有一些错漏和不统一的地方。比如,对某个变量的缺失观察值,有时会用点,有时会用-9,-99等来表示。回归时如果 使用这些观察,往往得出非常错误的结果。还有,在不同的数据文件中,相同变量有时使用的变量名不同,会给合并数

stata命令大全(全)

*********面板数据计量分析与软件实现********* 说明:以下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)

Stata统计分析命令

Stata统计分析常用命令汇总 一、winsorize极端值处理 范围:一般在1%和99%分位做极端值处理,对于小于1%的数用1%的值赋值,对于大于99%的数用99%的值赋值。 1、Stata中的单变量极端值处理: stata 11.0,在命令窗口输入“findit winsor”后,系统弹出一个窗口,安装winsor模块 安装好模块之后,就可以调用winsor命令,命令格式:winsor var1, gen(new var) p(0.01) 或者在命令窗口中输入:ssc install winsor安装winsor命令。winsor命令不能进行批量处理。 2、批量进行winsorize极端值处理: 打开链接:https://www.wendangku.net/doc/1014609925.html,/judson.caskey/data.html,找到winsorizeJ,点击右键,另存为到stata中的ado/plus/目录下即可。命令格式:winsorizeJ var1var2var3,suffix(w)即可,这样会生成三个新变量,var1w var2w var3w,而且默认的是上下1%winsorize。如果要修改分位点,则写成如下格式:winsorizeJ var 1 var2 var3,suffix(w) cuts(5 95)。 3、Excel中的极端值处理:(略) winsor2 命令使用说明 简介:winsor2 winsorize or trim (if trim option is specified) the variables in varlist at particular percentiles specified by option cuts(# #). In defult, new variables will be generated with a suffix "_w" or "_tr", which can be changed by specifying suffix() option. The replace option replaces the variables with their winsorized or trimmed ones. 相比于winsor命令的改进: (1) 可以批量处理多个变量; (2) 不仅可以winsor,也可以trimming; (3) 附加了by() 选项,可以分组winsor 或trimming; (4) 增加了replace 选项,可以不必生成新变量,直接替换原变量。 范例: *- winsor at (p1 p99), get new variable "wage_w" . sysuse nlsw88, clear . winsor2 wage *- left-trimming at 2th percentile . winsor2 wage, cuts(2 100) trim *- winsor variables by (industry south), overwrite the old variables . winsor2 wage hours, replace by(industry south) 使用方法: 1. 请将winsor 2.ado 和winsor2.sthlp 放置于stata12\ado\base\w 文件夹下; 2. 输入help winsor2 可以查看帮助文件;

stata基础命令

display 命令 display “1+1”输出为1+1 display 1+1 输出为2 set mem设置内存 set mem 500m,perm 设置内存为500m set matsize 500 设置matsize为500 query memory 查看内存设置 保留和删除变量keep & drop drop crcd repttype 删除crcd repttype keep stkcd stknme nindcd nnindcd 保留stkcd stknme nindcd nindcd (注意命令的大小写) save保存stata格式的数据 save “D:\Teach课件\STATA\data\CG_Co.dta “新建文件名 save “D:\Teach课件\STATA\data\CG_Co.dta ”,replace 重置已有文件 use&insheet using use 打开dta文件,insheet using打开csv文件 gen生成的新的变量 gen tdate=date(accper,"YMD") 产生一个tdate变量用来存放从accper变量中提取的年月日 format tdate %d 设置tdate为整数型变量 gen year=year(tdate) 提取tdate里面的年份存为year变量 gen month=month(tdate) 提取tdate里面的月份存为month变量 if条件句&tab离散变量的频率 keep if month==12 如保留变量month等于12的数据(注意双等号) tab year 画出变量year的离散频率 纵向添加数据append use TRD_Year2011.dta,clear 打开2011的数据文件 append using TRD_Year2012.dta 向2011的数据文件中纵向加入2012的数据文件*注意2012内的文件变数量与变数名必须相同,若不同,用keep或drop 保留或删除 merge文件合并 use TRD_Year2011_2012.dta,clear 打开该数据文件 sort stkcd year 排列一下要合并文件内的数据顺序stkcd和year 均为变量名 save TRD_Year2011_2012.dta,replace 排列后重新储存该数据文件

stata命令大全

调整变量格式: format x1 %10.3f ——将x1的列宽固定为10,小数点后取三位 format x1 %10.3g ——将x1的列宽固定为10,有效数字取三位 format x1 %10.3e ——将x1的列宽固定为10,采用科学计数法 format x1 %10.3fc ——将x1的列宽固定为10,小数点后取三位,加入千分位分隔符 format x1 %10.3gc ——将x1的列宽固定为10,有效数字取三位,加入千分位分隔符 format x1 %-10.3gc ——将x1的列宽固定为10,有效数字取三位,加入千分位分隔符,加入“-”表示左对齐 合并数据: use "C:\Documents and Settings\xks\桌面\2006.dta", clear merge using "C:\Documents and Settings\xks\桌面\1999.dta" ——将1999和2006的数据按照样本(observation)排列的自然顺序合并起来 use "C:\Documents and Settings\xks\桌面\2006.dta", clear merge id using "C:\Documents and Settings\xks\桌面\1999.dta" ,unique sort ——将1999和2006的数据按照唯一的(unique)变量id来合并,在合并时对id进行排序(sort)建议采用第一种方法。 对样本进行随机筛选: sample 50 在观测案例中随机选取50%的样本,其余删除 sample 50,count 在观测案例中随机选取50个样本,其余删除 查看与编辑数据: browse x1 x2 if x3>3 (按所列变量与条件打开数据查看器) edit x1 x2 if x3>3 (按所列变量与条件打开数据编辑器) 数据合并(merge)与扩展(append) merge表示样本量不变,但增加了一些新变量;append表示样本总量增加了,但变量数目不变。one-to-one merge: 数据源自stata tutorial中的exampw1和exampw2 第一步:将exampw1按v001~v003这三个编码排序,并建立临时数据库tempw1 clear use "t:\statatut\exampw1.dta" su ——summarize的简写 sort v001 v002 v003 save tempw1 第二步:对exampw2做同样的处理 clear use "t:\statatut\exampw2.dta" su sort v001 v002 v003 save tempw2 第三步:使用tempw1数据库,将其与tempw2合并: clear use tempw1 merge v001 v002 v003 using tempw2

常用到的stata命令

常用到的sta命令 闲话不说了。help和search都是查找帮助文件的命令,它们之间的区别在于help用于查找精确的命令名,而search是模糊查找。如果你知道某个命令的名字,并且想知道它的具体使用方法,只须在sta的命令行窗口中输入help空格加上这个名字。回车后结果屏幕上就会显示出这个命令的帮助文件的全部内容。如果你想知道在sta下做某个估计或某种计算,而不知道具体该如何实现,就需要用search命令了。使用的方法和help类似,只须把准确的命令名改成某个关键词。回车后结果窗口会给出所有和这个关键词相关的帮助文件名和链接列表。在列表中寻找最相关的内容,点击后在弹出的查看窗口中会给出相关的帮助文件。耐心寻找,反复实验,通常可以较快地找到你需要的内容。 下面该正式处理数据了。我的处理数据经验是最好能用sta的do文件编辑器记下你做过的工作。因为很少有一项实证研究能够一次完成,所以,当你下次继续工作时。能够重复前面的工作是非常重要的。有时因为一些细小的不同,你会发现无法复制原先的结果了。这时如果有记录下以往工作的do文件将把你从地狱带到天堂。因为你不必一遍又一遍地试图重现做过的工作。在sta窗口上部的工具栏中有个孤立的小按钮,把鼠标放上去会出现“bring do-file editor to front”,点击它就会出现do文件编辑器。 为了使do文件能够顺利工作,一般需要编辑do文件的“头”和“尾”。这里给出我使用的“头”和“尾”。 /*(标签。简单记下文件的使命。)*/ capture clear(清空内存中的数据) capture log close(关闭所有打开的日志文件) set mem 128m(设置用于sta使用的内存容量) set more off(关闭more选项。如果打开该选项,那么结果分屏输出,即一次只输出一屏结果。你按空格键后再输出下一屏,直到全部输完。如果关闭则中间不停,一次全部输出。) set matsize4000(设置矩阵的最大阶数。我用的是不是太大了?)

stata常用命令模板

stata 常用命令 (2012-07-29 17:22:25) 转载▼ 分类:stata 标签: 杂谈 save命令 FileSave As 例1. 表1.为某一降压药临床试验数据,试从键盘输入Stata,并保存为Stata格式文件。STATA数据库的维护 排序 SORT 变量名1 变量名2 …… 变量更名 rename 原变量名新变量名 STATA数据库的维护 删除变量或记录 drop x1 x2 /* 删除变量x1和x2 drop x1-x5 /* 删除数据库中介于x1和x5间的所有变量(包括x1和x5) drop if x<0 /* 删去x1<0的所有记录 drop in 10/12 /* 删去第10~12个记录 drop if x==. /* 删去x为缺失值的所有记录 drop if x==.|y==. /* 删去x或y之一为缺失值的所有记录 drop if x==.&y==. /* 删去x和y同时为缺失值的所有记录 drop _all /* 删掉数据库中所有变量和数据 STATA的变量赋值 用generate产生新变量 generate 新变量=表达式 generate bh=_n /* 将数据库的内部编号赋给变量bh。 generate group=int((_n-1)/5)+1 /* 按当前数据库的顺序,依次产生5个1,5个2,5个 3……。直到数据库结束。 generate block=mod(_n,6) /* 按当前数据库的顺序,依次产生1,2,3,4,5,0。generate y=log(x) if x>0 /* 产生新变量y,其值为所有x>0的对数值log(x),当x<=0时,用缺失值代替。 egen产生新变量 set obs 12 egen a=seq() /*产生1到N的自然数 egen b=seq(),b(3) /*产生一个序列,每个元素重复#次 egen c=seq(),to(4) /*产生多个序列,每个序列从1到# egen d=seq(),f(4)t(6) /*产生多个序列,每个序列从#1到#2 encode 字符变量名,gen(新数值变量名) 作用:将字符型变量转化为数值变量。

STATA面板数据模型操作命令

STATA 面板数据模型估计命令一览表 一、静态面板数据的STATA 处理命令 εαβit ++=x y it i it 固定效应模型 μβit +=x y it it εαμit +=it it 随机效应模型 (一)数据处理 输入数据 ●tsset code year 该命令是将数据定义为“面板”形式 ●xtdes 该命令是了解面板数据结构 ●summarize sq cpi unem g se5 ln 各变量的描述性统计(统计分析) ●gen lag_y=L.y /////// 产生一个滞后一期的新变量

gen F_y=F.y /////// 产生一个超前项的新变量 gen D_y=D.y /////// 产生一个一阶差分的新变量 gen D2_y=D2.y /////// 产生一个二阶差分的新变量 (二)模型的筛选和检验 ●1、检验个体效应(混合效应还是固定效应)(原假设:使用OLS混合模型)●xtreg sq cpi unem g se5 ln,fe 对于固定效应模型而言,回归结果中最后一行汇报的F统计量便在于检验所有的个体效应整体上显著。在我们这个例子中发现F统计量的概率为0.0000,检验结果表明固定效应模型优于混合OLS模型。 ●2、检验时间效应(混合效应还是随机效应)(检验方法:LM统计量) (原假设:使用OLS混合模型) ●qui xtreg sq cpi unem g se5 ln,re (加上“qui”之后第一幅图将不会呈现) xttest0

可以看出,LM检验得到的P值为0.0000,表明随机效应非常显著。可见,随机效应模型也优于混合OLS模型。 ●3、检验固定效应模型or随机效应模型(检验方法:Hausman检验) 原假设:使用随机效应模型(个体效应与解释变量无关) 通过上面分析,可以发现当模型加入了个体效应的时候,将显著优于截距项为常数假设条件下的混合OLS模型。但是无法明确区分FE or RE的优劣,这需要进行接下来的检验,如下: Step1:估计固定效应模型,存储估计结果 Step2:估计随机效应模型,存储估计结果 Step3:进行Hausman检验 ●qui xtreg sq cpi unem g se5 ln,fe est store fe qui xtreg sq cpi unem g se5 ln,re est store re hausman fe (或者更优的是hausman fe,sigmamore/ sigmaless) 可以看出,hausman检验的P值为0.0000,拒绝了原假设,认为随机效应模型的基本假设得不到满足。此时,需要采用工具变量法和是使用固定效应模型。

常用stata命令-好用

我常用到的stata命令 最重要的两个命令莫过于help和search了。即使是经常使用stata的人也很难,也没必要记住常用命令的每一个细节,更不用说那些不常用到的了。所以,在遇到困难又没有免费专家咨询时,使用stata自带的帮助文件就是最佳选择。stata的帮助文件十分详尽,面面俱到,这既是好处也是麻烦。当你看到长长的帮助文件时,是不是对迅速找到相关信息感到没有信心? 闲话不说了。help和search都是查找帮助文件的命令,它们之间的区别在于help用于查找精确的命令名,而search是模糊查找。如果你知道某个命令的名字,并且想知道它的具体使用方法,只须在stata的命令行窗口中输入help空格加上这个名字。回车后结果屏幕上就会显示出这个命令的帮助文件的全部内容。如果你想知道在stata下做某个估计或某种计算,而不知道具体该如何实现,就需要用search命令了。使用的方法和help类似,只须把准确的命令名改成某个关键词。回车后结果窗口会给出所有和这个关键词相关的帮助文件名和链接列表。在列表中寻找最相关的内容,点击后在弹出的查看窗口中会给出相关的帮助文件。耐心寻找,反复实验,通常可以较快地找到你需要的内容。 下面该正式处理数据了。我的处理数据经验是最好能用stata的do文件编辑器记下你做过的工作。因为很少有一项实证研究能够一次完成,所以,当你下次继续工作时。能够重复前面的工作是非常重要的。有时因为一些细小的不同,你会发现无法复制原先的结果了。这时如果有记录下以往工作的do文件将把你从地狱带到天堂。因为你不必一遍又一遍地试图重现做过的工作。在stata窗口上部的工具栏中有个孤立的小按钮,把鼠标放上去会出现“bring do-file editor to front”,点击它就会出现do文件编辑器。 为了使do文件能够顺利工作,一般需要编辑do文件的“头”和“尾”。这里给出我使用的“头”和“尾”。 /*(标签。简单记下文件的使命。)*/ capture clear (清空内存中的数据) capture log close (关闭所有打开的日志文件) set mem 128m (设置用于stata使用的内存容量) set more off (关闭more选项。如果打开该选项,那么结果分屏输出,即一次只输出一屏结果。你按空格键后再输出下一屏,直到全部输完。如果关闭则中间不停,一次全部输出。)set matsize 4000 (设置矩阵的最大阶数。我用的是不是太大了?) cd D: (进入数据所在的盘符和文件夹。和dos的命令行很相似。) log using (文件名).log,replace (打开日志文件,并更新。日志文件将记录下所有文件运行后给出的结果,如果你修改了文件内容,replace选项可以将其更新为最近运行的结果。) use (文件名),clear (打开数据文件。) (文件内容)

Stata常用15条命令

【命令1】:导入数据 一般做实证分析使用的是excel中的数据,其后缀名为.xls,需要将其修改为.csv insheet using name.csv, clear 【命令2】:删除重复变量 sort var1 var2 duplicatesdrop var1 var2, force 【命令3】:合并数据 use data1, clear merge m:m var1 var2 using data2 drop if _merge==2 drop if _merge==1 drop _merge 【命令4】:描述性统计分析 tabstat var1var2, stat(n min mean median p25 p75 max sd), if groupvar==0 or 1 输出到word中: logout, save(name) word replace: tabstat var, stat(n min mean p50 max sd) col(stat)f(%9.2g) 【命令5】:结果输出 安装 ssc install estout, replace 单个回归 reg y x esttab using name.rtf, compress nogap r2 ar2 star(* 0.1 ** 0.05 *** 0.01) 多个回归一起 reg y x1 est store m1 reg y x2 est store m2 esttab m1 m2 using name.rtf, compress nogap r2 ar2 star(* 0.1 ** 0.05 *** 0.01)

stata常用命令

调整变量格式: format x1 % ——将x1的列宽固定为10,小数点后取三位 format x1 % ——将x1的列宽固定为10,有效数字取三位 format x1 % ——将x1的列宽固定为10,采用科学计数法 format x1 % ——将x1的列宽固定为10,小数点后取三位,加入千分位分隔符 format x1 % ——将x1的列宽固定为10,有效数字取三位,加入千分位分隔符 format x1 % ——将x1的列宽固定为10,有效数字取三位,加入千分位分隔符,加入“-”表示左对齐合并数据: use "C:\Documents and Settings\xks\桌面\", clear merge using "C:\Documents and Settings\xks\桌面\" ——将1999和2006的数据按照样本(observation)排列的自然顺序合并起来 use "C:\Documents and Settings\xks\桌面\", clear merge id using "C:\Documents and Settings\xks\桌面\" ,unique sort ——将1999和2006的数据按照唯一的(unique)变量id来合并,在合并时对id进行排序(sort)建议采用第一种方法。 对样本进行随机筛选: sample 50 在观测案例中随机选取50%的样本,其余删除 sample 50,count 在观测案例中随机选取50个样本,其余删除 查看与编辑数据: browse x1 x2 if x3>3 (按所列变量与条件打开数据查看器) edit x1 x2 if x3>3 (按所列变量与条件打开数据编辑器) 数据合并(merge)与扩展(append) merge表示样本量不变,但增加了一些新变量;append表示样本总量增加了,但变量数目不变。one-to-one merge: 数据源自stata tutorial中的exampw1和exampw2 第一步:将exampw1按v001~v003这三个编码排序,并建立临时数据库tempw1 clear use "t:\statatut\" su ——summarize的简写 sort v001 v002 v003 save tempw1 第二步:对exampw2做同样的处理 clear use "t:\statatut\" su sort v001 v002 v003 save tempw2 第三步:使用tempw1数据库,将其与tempw2合并: clear use tempw1 merge v001 v002 v003 using tempw2 第四步:查看合并后的数据状况:

常用到的stata命令

安装estat: ssc install estout,replace\ 2010-10-14 11:38:15来自: 杨囡囡(all a woman lack is a wife) (转自人大论坛) 调整变量格式: format x1 %10.3f ——将x1的列宽固定为10,小数点后取三位 format x1 %10.3g ——将x1的列宽固定为10,有效数字取三位 format x1 %10.3e ——将x1的列宽固定为10,采用科学计数法 format x1 %10.3fc ——将x1的列宽固定为10,小数点后取三位,加入千分位分隔符 format x1 %10.3gc ——将x1的列宽固定为10,有效数字取三位,加入千分位分隔符 format x1 %-10.3gc ——将x1的列宽固定为10,有效数字取三位,加入千分位分隔符,加入“-”表示左对齐 合并数据: use "C:\Documents and Settings\xks\桌面\2006.dta", clear merge using "C:\Documents and Settings\xks\桌面\1999.dta" ——将1999和2006的数据按照样本(observation)排列的自然顺序合并起来 use "C:\Documents and Settings\xks\桌面\2006.dta", clear merge id using "C:\Documents and Settings\xks\桌面\1999.dta" ,unique sort ——将1999和2006的数据按照唯一的(unique)变量id来合并,在合并时对id进行排序(sort) 建议采用第一种方法。 对样本进行随机筛选: sample 50 在观测案例中随机选取50%的样本,其余删除 sample 50,count 在观测案例中随机选取50个样本,其余删除 查看与编辑数据:

相关文档