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极端值处理:

打开链接:http://personal.anderson.ucla.edu/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 \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 \ . 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. 请将 winsor2.ado 和 winsor2.sthlp 放置于 stata12\\ado\\base\\w 文件夹下; 2. 输入 help winsor2 可以查看帮助文件;

二、描述性统计

1、summarize

命令格式:su、sum或者summarize [varlist] [if] [in] [weight] [,options]

如果summarize或sum后不加任何变量,则默认对数据中的所有变量进行描述统计 options 选项:detail 表示产生更加详细的统计变量

Separator(n)表示每n个变量画一条分界线,n=0表示禁止使用分界线

Summarize 描述统计输出表中包含:样本容量、平均数、标准差、最小值和最大值 2、tabstat

命令格式:tabstat [varlist] [if] [in] [weight] [,options]

options 选项:stat(statname) 表示设定所需要的统计量 col(stat)或c(s)表示将结果报表转置 统计量:

mean:平均数 count/n:观测值数目 sum:加总

max/min :最大值/最小值 range :极差 sd:标准差 cv:变异系数 semean :平均标准误差 skewness:偏度var :方差

kurtosis :峰度 median/p50:中位数 p# :#%百分位数 例如:tabstat[varlist],stat(count mean sd median min max range) col(stat) 3、描述性统计结果输出到word或Excel

用sum做的描述性统计:logout, save(miaoshutongji) word replace:sum

用tabstat做的描述性统计:logout, save(miaoshutongji) word replace:tabstat [varlist] ,stat(count mean sd median min max range) col(stat) 分组描述:bysort var:

三、相关性分析

(一)相关性分析 1、Pearson相关系数命令格式:correlate(简写:cor或corr)[varlist] [if] [in] [weight] [,options] 2、spearman相关系数命令格式:spearman[varlist], stats(rho p)

3、在Stata中,命令corr用于计算一组变量间的协方差或相关系数矩阵;

4、命令pwcorr可用于计算一组变量中两两变量的相关系数,同时还可以对相关系数的显著性进行检验;option选项中加上sig可显示显著性水平:pwcorr[varlist] ,sig

5、命令pcorr 用于计算一组变量中两两变量的偏相关系数并进行显著性检验。 6、Spearman 和 Pearson 检验同在一个表的命令:corrtbl[varlist] ,corrvars ([varlist])

输出结果中,上三角为Spearman相关系数和显著水平,下三角为Pearson系数和显著水平。 (二)输出相关系数表到word或Excel中

例如:logout, save(mytable) word replace: pwcorr_a price mpg rep78 headroom trunk, star1(0.01) star5(0.05) star10(0.1)

四、截面数据单方程线性回归模型的Stata实现

命令格式:regress(简写:reg)depvar indepvars [if] [in] [weigh] [option] (depvar表示因变量, indepvars表示自变量)

五、异方差的检验与处理

1、检验异方差命令格式:hettest 2、判断异方差的标准:

看P值的大小来判断,如果P值小于0.05,则不能排除异方差的可能,上图中P值等于0.4584>0.05,因此,可以排除异方差的可能性。

3、处理异方差命令格式:在reg命令后加上“,r”或者“,robust”即可。经异方差处理后的回归不显示调整后的R2(adj-R2),如果要查看调整后的R2,再输入命令:di e(r2_a)

六、多重共线性(自变量之间高度相关)命令格式:vif

(一)判断多重共线性的标准(两个标准必须同时满足): 1、最大的vif大于10; 2、平均的vif大于1 。 (二)多重共线性的修正

1、采用逐步回归进行修正,命令格式:sw reg depvar indepvar, pr(0.05)

2、对于含二次项的,使用“对中”的方法,既可以保留二次项,又可以在一定程度上克服多重共线性的问题:先定义两个变量,分别为该变量减去其均值和该变量的平方,命令如下: sum var

gen var1=var-r(mean) gen var2=var^2

再用新变量代替原来的变量进行回归处理

七、内生性的检验与处理(内生性是指自变量与误差项之间有关系)

1、内生性的检验:ovtest

看P值的大小来判断,如果P值小于0.05,则不能排除内生性的可能,上图中P值等于0.4717>0.05,因此,可以排除内生性的可能。 2、内生性的处理:使用工具变量法:ivreg

内生性的三个来源:测量误差、遗漏变量和双向因果。 1、变量的内生性。

这个是没有办法单独检验的。当有合适工具变量时候,是可以检验的,就是hausman检验

2、工具变量的外生性。

这个也是没办法检验的。当有很多工具变量时候,可以检验是否有不是外生的,就是“过度识别”问题

3、工具变量的相关性。

这个可以说成是“弱工具变量”问题,检验可以通过一阶段的F值。还可以利用Partial R2。 4、估计方法

stata里面有这么几个2sls,2sls smal、liml、gmm,各自适用情况:small适合小样本;liml适合弱工具变量;gmm适合异方差。 【例子】 webuse hsng2

*Fit a regression via 2SLS, requesting small-sample statistics ivregress 2sls rent pcturban (hsngval = faminc iregion), small *Fit a regression using the LIML estimator

ivregress liml rent pcturban (hsngval = faminc iregion)

*Fit a regression via GMM using the default heteroskedasticity-robust weight matrix ivregress gmm rent pcturban (hsngval = faminc iregion)

*Fit a regression via GMM using a heteroskedasticity-robust weight matrix, requesting nonrobust standard errors

ivregress gmm rent pcturban (hsngval = faminc iregion), vce(unadjusted) *检验

estata firststage ,all forcenonrobust \\\\\\可以查看第一阶段F值,已经partial R2 estat overid \\\\\\查看是否过度识别 estat endogenous \\\\\\查看是否异方差

regress 2sls rent pcturban hsngval est store m1

ivregress 2sls rent pcturban (hsngval = faminc iregion) est store m2

hausman m1 m2 \\\\\\内生检验

八、线性方程组的回归分析

命令格式:sureg(depvar1 varlist1)(depvar2 varlist2)…(depvarN varlistN) [if] [in] [weigh]

九、联立方程组

命令格式:reg3 (depvar1 varlist1)(depvar2 varlist2)…(depvarN varlistN) [if] [in] [weigh]

十、面板数据的固定效应和随机效应 Xtset

固定效应命令格式:xtreg depvar indepvars [if] [in] ,fe[FE_options] 随机效应命令格式:xtreg depvar indepvars [if] [in] ,re[FE_options] hausman检验固定效应还是随机效应? 【例子】

xtreg y var1 var2 var3,fe est store fe

xtreg y var1 var2 var3,re est store re

hausman fe re,sigmamore hausman fe re,sigmaless

*sigmamore利用有效估计量方差,即re *sigmaless利用一致估计量方差,即fe

十一:Stata回归结果的导出

1、在命令窗口中输入:ssc install esttab,安装命令 esttab 2、reg 回归

3、esttab using filename.rtf 将以word形式输出回归结果,后缀改成.xls或者.csv则以Excel格式输出,输出内容为变量名称和相应的回归系数,t值,显著性水平标识。系统默认显著性水平是0.001,0.01和0.05,若要改成0.01,0.05和0.1,则输出esttab m1 m2 using aaa.rtf, star(* 0.10 ** 0.05 *** 0.01)。

4、批量输出回归结果:每运行一个regression,存起来:est store m1。m1是你要改的,第一个model所以我叫m1,第二个的话指令就变成est store m2,依次类推,最后运行指令:esttab m1 m2 ... using test.rtf。

esttab m11111 using aaaaa.rtf, star(* 0.10 ** 0.05 *** 0.01)b(%6.4f)

5、outreg2可以将回归结果导入word、excle、latex等,而且可以根据自己需要改变格式: ssc install outreg2 use auto,clear [varlist] est store m1

outreg2 [m1] using test.doc,replace

十二、合并样本(将关键词相同的多个样本合并为一个) 命令格式:duplicates drop varlist ,force

例如将同一企业在同一天发生的多起并购合为一起,可根据证券代码和公告日期关键词,将其合并,命令:duplicates drop company_id event_date ,force

十三、均值t检验

命令格式:ttest CAR1 == CAR2, unpaired

十四、中位数Z检验(非参数Wilcoxon秩和检验) 命令格式:ranksum var, by(groupvar) groupvar为分组变量

十五、检验两组均值的显著性差异,在t检验的后面数值上面加星号 可以用 ttest 命令执行检验,它会直接报告星号。

亦可采用外部命令 meantab 执行检验,自己根据 t 值大小标注星号。 help meantab //这个最好用 sysuse nlsw88, clear

meantab collgrad wage hours ttl_exp tenure, /// over(union) tstat diff noncells

另有一个李春涛老师编写的命令,可以直接标注星号: findit ttable //多变量,两组差异

十六、删除有缺失值的样本 egen mis = rowmiss(_all) drop if mis

条件语句:cond

例如:cond(missing(x), ., cond(x>2,50,70)) returns . if x is missing, returns 50 if x > 2, and returns 70 if x<2

十七、中心化处理与标准化处理 1、安装命令:findit center 2、中心化:

center varlist (注:生成的新变量默认加前置”c_”,可一次对多个变量进行处理)

或:center var, g (newvar) (注:只能对一个变量进行中心化,并生成给定名称的新变量) 3、标准化:

center varlist, prefix(z_) standardize (注:生成的新变量加前置”z_”,可多个,可更改)

十八、恢复数据命令

preserve (处理数据前使用该命令,否则没有数据可恢复) drop var1-var100 (处理数据) restore (恢复数据)

十九、genicv产生交叉项 【问题】

有时候,想生成很多交叉项,但是又不愿意一个一个写。 有时候,想看一个交叉项,但是又不愿意生成。 【方法】

genicv可以一键生成很多交叉项 ##可以直接表示交叉项。 【例子】

ssc install genicv sysuse auto,clear

genicv length weight foreign //会生成4个交叉项,所有可能情况,并且有label reg price length weight length_weight *如果不愿意生成,直接用

reg price c.length##c.weight \\\\\\和上面回归一样一样的

二十、用stata统计变量的个数,但是要去掉重复的部分 bys id:g n=_n count if n==1

二十一、stata中的主成分分析法

1、首先,需要对变量进行哪些检验?KMO?还有什么?KMO检验结果符合什么条件才能继续进行主成分分析?

答:首先使用KMO检验和SMC检验。

KMO的判断为,Using the Kaiser (1974) characterization of KMO values, 0.00 to 0.49 unacceptable 0.50 to 0.59 miserable 0.60 to 0.69 mediocre 0.70 to 0.79 middling 0.80 to 0.89 meritorious 0.90 to 1.00 marvelous

SMC即一个变量与其他所有变量的复相关系数的平方,也就是复回归方程的可决系数。SMC比较高表明变量的线性关系越强,共性越强,主成分分析就越合适。

命令是 estat kmo estat smc

确定是否需要进行主成分分析。如果有些KMO或者SMC值太小,则要考虑要不要将它们放入主成分中。

然后进行主成分回归。 使用命令为:

pca varlist (不清楚就 help pca) 2、例如,对Y的5各指标执行了命令 pca y1 y2 y3 y4 y5 得出结果方差贡献率(proportion)就是权重吗?

答: 不是。假如设定方差贡献率为95%,那么,累积方差超过95%的那几个特征值、所对应的特征变量,就是权重。

3、看有的帖子上回复说,需要接着执行predict y1 y2 y3 y4 y5,score,这是为了得到每个指标的主成分得分吗?为什么我执行了一下,只生成了一个y1, 别y2、y3、y4、y5都没生成呢 答:直接“predict y1-y4”就可以。生成的四个就是得分。

4、不知道你要问什么?

总之,主成分的步骤为

1、先通过KMO检验和SMC检验确定是否需要主成分分析

2、进行主成分分析,通过累计贡献率确定需要的哪几个主成分 3、根据情况看是否需要rotate

4、通过predict进行得分。或者通过scoreplot看得分分布图。

二十二、将一般的数据转化为面板数据

原数据的形式(excel中)是:2008一张sheet,2009一张sheet。。。。。即:

然后改成这样的数据形式是:

粘贴在stata里就是这样的形式(注意:变量名字一定要改):其中Y为因变量,可以是很多个,X1、X2为自变量,也可以是很多个,stata中的变量名依次为:id、Y2008、Y2009、Y2010、X12008、X12009、X12010、X22008、X22009、X22010

在stata中输入命令:

reshape long Y X1 X2,i(id) j(year)回车即可,变为:

二十三、关于数值型转换为字符型的问题

1、股票代码导入STATA后都变成数值型,现想用tostring命令变回字符型,但长度小于6位的代码,在变回字符型后在前面补够不足6位的0。

方法:format variable s

这只是在显示上补充了0,没有在值上补充。以下可以改变x的值: replace x=substr(\

2、将一个12位的数值转换为字符,再从字符里提取前五个字符。转成字符后以科学计数法显示,提取前五位数是提取的科学计数法的前五位,如将110102002016转成字符后显示为1.10e+11,提取时提的是“1.10e”而不是我想要的“11010” g y=substr(string(x,\

3、将字符型转化为数值型命令为:destring var,replace (转换后替换原来的值)

若字符型中含其他符号并要生成新变量则用:destring varlist, gen(newvarlist) ignore(“$ ,%”)

二十四、分组

均分四组:sort var

xtile prop=var, nq(x) (括号中的x 代表分成的group数)

例如:

sort insto_ma

xtile prop=insto_ma, nq(4)// 以insto_ma的四分位点分成四组 sort prop insto_msd

egen stdI=xtile(insto_msd),by(prop) nq(4)//按prop,以insto_msd的四分位点分成四组

二十五、估计残差

做完回归后,使用命令predict e ,r

22排列组合计算C3?3,C4?6:di comb(3,2),di comb(4,2)

取整:

1.ceil(x),returns the unique integer n such that n-1 < x <=n. returns x (not “.”) if x is missing, meaning that ceil(.a) = .a

2.floor(x),returns the unique integer n such that n<= x < n + 1, returns x (not “.”) if x is missing, meaning that floor(.a) = .a

3.int(x), returns the integer obtained by truncating x toward 0; thus, int(5.2) = 5,int(-5.8) =-5,returns x (not “.”) if x is missing, meaning that int(.a) = .a。One way to obtain the closest integer to x is int(x+sign(x)/2), which simplifies to int(x+0.5) for x 0. However, use of the round() function is preferred

任何两种软件之间的数据转换,有一种方法是人挡杀人,佛挡杀佛。那就是:

先在A软件里面将其另存为文本格式,然后在B软件里面里面以文本文件导入,再保存为B软件的文件格式。文本格式,我一般习惯将其存为.csv格式,即变量数据间以逗号分隔,也可以以制表符分隔或、空格分隔或是固定列宽。

伍德里奇《横截面与面板数据的经济计量分析》

下面简要地分享一下安装步骤或过程(这里演示的是WIN7_32):

一、下载全部的安装文件包“Stata_SE_12.1.rar”,然后解压,再打开其中的文件夹Stata12_Win,再“以管理员身份运行”其中的Setup.exe。

二、选择并点击next,再选择并点击“Iaccept the license agreement”,再选择并点击“anyone who uses this computer”或“only for me”,然后,就进入到以下界面,给你4个选择:32-bit MP, 32-bit SE, 32-bit IC, 32-bit Small。这里,注意,请选择32-bit SE(这里演示的是WIN7_32,若你的系统是64位的,则选择64-bit SE)。

说明一下,STATA的最高级的版本是MP。SE的版本级别仅次于MP。MP与SE的唯一区别在于,前者designed for parallel processing,而后者没有。言下之意,前者可以通过同时运行多处理器或内核来加快运算速度,两者在功能上完全没有区别,只是在大数据处理时,MP要占优。因此,我们通常的教学与科研使用,SE版本已经足够。目前网上释放出来的破解的最高版本仅限于SE版,MP版未有破解。我想,如果你真的需要以MP版进行大数据处理,那一定是相当高级别的用户了,购买一个正版的MP版就一点都不过分了。

三、然后再次点击“next”、“next”,然后选择点击“Use Each User’s Documents Folder”或“Use a Fixed Folder for All users”(本人建议选择后者,并在非系统分区中建议一个文件夹,比如,我通常以C分区为系统盘,因此,我通常在D分区中建立一个工作文件夹即D:\\data)。继续next,next, 则开始复制文件与安装软件,直到出现Finish,点击它,就安装完成了。

四、将crack文件夹中的文件“STATA.LIC”复制到安装文件夹中(通常为:C:\\ProgramFiles\\Stata12)。

五、运行STATA,在command中输入“db update”并回车(注意,不能输入“update all”命令,这是自动升级的命令,一方面自动升级通常很慢,另一方面,自动升级往往不成功),在随后出现的“update– Check for official updates”对话框中,选择“From alternative

location”,点击“browse”找到本人提供的安装文件中的文件夹“stata12update_win32”(若你是64位的系统,则为“stata12update_win64”),点击“确定”、“OK”。

六、按提示,或点击“install available update”,或在command中输入“update all”。

七、升级完成后,会提示,这是一个Special Edition, 点击help中的“About Stata”则显示版本为“Stata/SE12.1 for Windows (32-bit)”,其最新的更新日期为2013年3月20日。享用。