1、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、批量进行winsoriz
2、e极端值处理:打开链接: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 命令使用说明
3、简介: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 variabl
4、es 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
5、 . 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 放置于 stata12adobasew 文件夹下; 2. 输入 help winsor2 可以查看帮助文件;二、描述性统计1、summarize命令格式:su、sum或者summarize varlist if in
6、weight ,options如果summarize或sum后不加任何变量,则默认对数据中的所有变量进行描述统计options 选项:detail 表示产生更加详细的统计变量Separator(n)表示每n个变量画一条分界线,n=0表示禁止使用分界线Summarize 描述统计输出表中包含:样本容量、平均数、标准差、最小值和最大值2、tabstat命令格式:tabstat varlist if in weight ,optionsoptions 选项:stat(statname) 表示设定所需要的统计量 col(stat)或c(s)表示将结果报表转置统计量:mean:平均数 count/n:观
7、测值数目 sum:加总max/min :最大值/最小值 range :极差 sd:标准差 cv:变异系数 semean :平均标准误差 skewness:偏度var :方差kurtosis :峰度 median/p50:中位数 p# :#%百分位数例如:tabstatvarlist,stat(count mean sd median min max range) col(stat)3、描述性统计结果输出到word或Excel用sum做的描述性统计:logout, save(miaoshutongji) word replace:sum用tabstat做的描述性统计:logout, save(m
8、iaoshutongji) 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相关系数命令格式:spearmanvarlist, stats(rho p)3、在Stata中,命令corr用于计算一组变量间的协方差或相关系数矩阵;4、命令pwcorr可用于计算一组变量中
9、两两变量的相关系数,同时还可以对相关系数的显著性进行检验;option选项中加上sig可显示显著性水平:pwcorrvarlist ,sig5、命令pcorr 用于计算一组变量中两两变量的偏相关系数并进行显著性检验。6、Spearman 和 Pearson 检验同在一个表的命令:corrtblvarlist ,corrvars (varlist)输出结果中,上三角为Spearman相关系数和显著水平,下三角为Pearson系数和显著水平。(二)输出相关系数表到word或Excel中例如:logout, save(mytable) word replace: pwcorr_a price mpg
10、 rep78 headroom trunk, star1(0.01) star5(0.05) star10(0.1)四、截面数据单方程线性回归模型的Stata实现命令格式:regress(简写:reg)depvar indepvars if in weigh option(depvar表示因变量, indepvars表示自变量)五、异方差的检验与处理1、检验异方差命令格式:hettest2、判断异方差的标准:看P值的大小来判断,如果P值小于0.05,则不能排除异方差的可能,上图中P值等于0.45840.05,因此,可以排除异方差的可能性。3、处理异方差命令格式:在reg命令后加上“,r”或者“
11、,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 vargen va
12、r1=var-r(mean)gen var2=var2再用新变量代替原来的变量进行回归处理七、内生性的检验与处理(内生性是指自变量与误差项之间有关系)1、内生性的检验:ovtest看P值的大小来判断,如果P值小于0.05,则不能排除内生性的可能,上图中P值等于0.47170.05,因此,可以排除内生性的可能。2、内生性的处理:使用工具变量法:ivreg内生性的三个来源:测量误差、遗漏变量和双向因果。1、变量的内生性。这个是没有办法单独检验的。当有合适工具变量时候,是可以检验的,就是hausman检验2、工具变量的外生性。这个也是没办法检验的。当有很多工具变量时候,可以检验是否有不是外生的,就是
13、“过度识别”问题3、工具变量的相关性。这个可以说成是“弱工具变量”问题,检验可以通过一阶段的F值。还可以利用Partial R2。4、估计方法stata里面有这么几个2sls,2sls smal、liml、gmm,各自适用情况:small适合小样本;liml适合弱工具变量;gmm适合异方差。【例子】webuse hsng2*Fit a regression via 2SLS, requesting small-sample statisticsivregress 2sls rent pcturban (hsngval = faminc iregion), small*Fit a regress
14、ion using the LIML estimatorivregress liml rent pcturban (hsngval = faminc iregion)*Fit a regression via GMM using the default heteroskedasticity-robust weight matrixivregress gmm rent pcturban (hsngval = faminc iregion)*Fit a regression via GMM using a heteroskedasticity-robust weight matrix, reque
15、sting nonrobust standard errorsivregress gmm rent pcturban (hsngval = faminc iregion), vce(unadjusted)*检验estata firststage ,all forcenonrobust 可以查看第一阶段F值,已经partial R2estat overid 查看是否过度识别 estat endogenous 查看是否异方差 regress 2sls rent pcturban hsngvalest store m1ivregress 2sls rent pcturban (hsngval = f
16、aminc iregion)est store m2hausman 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 ,feFE_options随机效应命令格式:xtr
17、eg depvar indepvars if in ,reFE_optionshausman检验固定效应还是随机效应?【例子】xtreg y var1 var2 var3,feest store fextreg y var1 var2 var3,reest store rehausman fe re,sigmamorehausman fe re,sigmaless*sigmamore利用有效估计量方差,即re*sigmaless利用一致估计量方差,即fe十一:Stata回归结果的导出1、在命令窗口中输入:ssc install esttab,安装命令 esttab 2、reg 回归3、estt
18、ab 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,依次类推,最后运行指令:estt
19、ab 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 outreg2use auto,clearvarlistest store m1outreg2 m1 using test.doc,replace十二、合并样本(将关键词相同的多个样本合并为一个)命令格式:duplicates drop varlist ,force例如将同一企业在同一天发生
20、的多起并购合为一起,可根据证券代码和公告日期关键词,将其合并,命令: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 /这个最好用
21、 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(x2,50,70) returns . if x is missing, returns 50 if x 2, and returns
22、70 if x2十七、中心化处理与标准化处理1、安装命令:findit center2、中心化:center varlist (注:生成的新变量默认加前置”c_”,可一次对多个变量进行处理)或:center var, g (newvar) (注:只能对一个变量进行中心化,并生成给定名称的新变量)3、标准化:center varlist, prefix(z_) standardize (注:生成的新变量加前置”z_”,可多个,可更改)十八、恢复数据命令preserve (处理数据前使用该命令,否则没有数据可恢复)drop var1-var100 (处理数据)restore (恢复数据)十九、ge
23、nicv产生交叉项【问题】有时候,想生成很多交叉项,但是又不愿意一个一个写。有时候,想看一个交叉项,但是又不愿意生成。【方法】genicv可以一键生成很多交叉项#可以直接表示交叉项。【例子】ssc install genicvsysuse auto,cleargenicv length weight foreign /会生成4个交叉项,所有可能情况,并且有labelreg price length weight length_weight*如果不愿意生成,直接用reg price c.length#c.weight 和上面回归一样一样的二十、用stata统计变量的个数,但是要去掉重复的部分by
24、s id:g n=_ncount if n=1二十一、stata中的主成分分析法1、首先,需要对变量进行哪些检验?KMO?还有什么?KMO检验结果符合什么条件才能继续进行主成分分析?答:首先使用KMO检验和SMC检验。KMO的判断为,Using the Kaiser (1974) characterization of KMO values,0.00 to 0.49 unacceptable0.50 to 0.59 miserable0.60 to 0.69 mediocre0.70 to 0.79 middling0.80 to 0.89 meritorious0.90 to 1.00 ma
25、rvelousSMC即一个变量与其他所有变量的复相关系数的平方,也就是复回归方程的可决系数。SMC比较高表明变量的线性关系越强,共性越强,主成分分析就越合适。命令是estat kmoestat smc确定是否需要进行主成分分析。如果有些KMO或者SMC值太小,则要考虑要不要将它们放入主成分中。然后进行主成分回归。使用命令为:pca varlist (不清楚就 help pca)2、例如,对Y的5各指标执行了命令 pca y1 y2 y3 y4 y5 得出结果方差贡献率(proportion)就是权重吗?答: 不是。假如设定方差贡献率为95%,那么,累积方差超过95%的那几个特征值、所对应的特征
26、变量,就是权重。3、看有的帖子上回复说,需要接着执行predict y1 y2 y3 y4 y5,score,这是为了得到每个指标的主成分得分吗?为什么我执行了一下,只生成了一个y1, 别y2、y3、y4、y5都没生成呢答:直接“predict y1-y4”就可以。生成的四个就是得分。4、不知道你要问什么?总之,主成分的步骤为1、先通过KMO检验和SMC检验确定是否需要主成分分析2、进行主成分分析,通过累计贡献率确定需要的哪几个主成分3、根据情况看是否需要rotate4、通过predict进行得分。或者通过scoreplot看得分分布图。二十二、将一般的数据转化为面板数据原数据的形式(exce
27、l中)是: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命令变回字符型,但长度小于
28、6位的代码,在变回字符型后在前面补够不足6位的0。方法:format variable %06s 这只是在显示上补充了0,没有在值上补充。以下可以改变x的值:replace x=substr(000000+x,-6,6)2、将一个12位的数值转换为字符,再从字符里提取前五个字符。转成字符后以科学计数法显示,提取前五位数是提取的科学计数法的前五位,如将110102002016转成字符后显示为1.10e+11,提取时提的是“1.10e”而不是我想要的“11010”g y=substr(string(x,%12.0f),1,5)3、将字符型转化为数值型命令为:destring var,replace
29、 (转换后替换原来的值)若字符型中含其他符号并要生成新变量则用:destringvarlist,gen(newvarlist)ignore(“$,%”)二十四、分组均分四组:sort varxtile prop=var, nq(x) (括号中的x 代表分成的group数)例如:sort insto_maxtile prop=insto_ma, nq(4)/ 以insto_ma的四分位点分成四组sort prop insto_msdegen stdI=xtile(insto_msd),by(prop) nq(4)/按prop,以insto_msd的四分位点分成四组二十五、估计残差做完回归后,使用
30、命令predict e ,r排列组合计算: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) = .a2.floor(x),returns the unique integer n such that n= x n + 1, returns x (not “.”) if x is missing, meaning that floor(.a) = .a3.i
31、nt(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
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1