stata学习心得(网络版存盘)
2009-03-25 18:06
调整变量格式:
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,有效数字取三位,加入千分位分隔符,加入“- ”表示左对齐
合并数据:
桌面 \2006.dta", clear
桌面 \1999.dta"
——将 1999 和 2006 的数据按照样本(observation)排列的自然顺序合并起来
桌面 \2006.dta", clear
桌面 \1999.dta" ,unique sort
——将 1999 和 2006 的数据按照唯一的(unique )变量 id 来合并,在合并时对id 进行排序( sort )
建议采用第一种方法。
对样本进行随机筛选:
sample 50
在观测案例中随机选取50%的样本,其余删除
在观测案例中随机选取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
merge v001 v002 v003 using tempw2
第四步:查看合并后的数据状况:
ta _merge——tabulate _merge的简写
su
第五步:清理临时数据库,并删除_merge,以免日后合并新变量时出错
erase tempw1.dta
erase tempw2.dta
drop _merge
数据扩展append:
数据源自stata tutorial中的fac19和newfac
clear
use "t:\statatut\fac19.dta"
ta region
append using "t:\statatut\newfac"
ta region
合并后样本量增加,但变量数不变
茎叶图:
stem x1,line(2)(做x1的茎叶图,每一个十分位的树茎都被拆分成两段来显示,前半段为0~ 4,后半段为5~ 9)
stem x1,width(2)(做x1的茎叶图,每一个十分位的树茎都被拆分成五段来显示,每个小树茎的组
stem x1,round(100)(将x1除以100后再做x1的茎叶图)
直方图
采用 auto 数据库
histogram mpg, discrete frequency normal xlabel(1(1)5)
(discrete表示变量不连续,frequency表示显示频数,normal加入正太分布曲线,xlabel设定x轴,1和5为极端值, (1) 为单位)
histogram price, fraction norm
(fraction表示y轴显示小数,除了frequency和fraction这两个选择之外,该命令可替换为“ percent”百分比,和“ density ”密度;未加上discrete就表示将price当作连续变量来绘图)
histogram price, percent by(foreign)
(按照变量“ foreign ”的分类,将不同类样本的“price ”绘制出来,两个图分左右排布)
histogram mpg, discrete by(foreign, col(1))
(按照变量“ foreign ”的分类,将不同类样本的“mpg”绘制出来,两个图分上下排布)
histogram mpg, discrete percent by(foreign, total) norm
(按照变量“ foreign ”的分类,将不同类样本的“mpg”绘制出来,同时绘出样本整体的“总”直方图)
二变量图:
graph twoway lfit price weight || scatter price weight
(作出 price和weight的回归线图——“ lfit”,然后与price和weight的散点图相叠加)
twoway scatter price weight,mlabel(make)
(做 price和weight的散点图,并在每个点上标注“make”,即厂商的取值)
twoway scatter price weight || lfit price weight,by(foreign)
(按照变量foreign的分类,分别对不同类样本的price和weight做散点图和回归线图的叠加,两图呈左右分
布)
twoway scatter price weight || lfit price weight,by(foreign,col(1))
(按照变量foreign的分类,分别对不同类样本的price和weight做散点图和回归线图的叠加,两图呈上下分
布)
twoway scatter price weight [fweight= displacement],msymbol(oh)
(画出 price和weight的散点图,“ msybol(oh)”表示每个点均为中空的圆圈,[fweight=displacement]表示每个点的大小与displacement的取值大小成比例)
twoway connected y1 time,yaxis(1) || y2 time,yaxis(2)
(画出 y1 和 y2 这两个变量的时间点线图,并将它们叠加在一个图中,左边“yaxis(1) ”为y1 的度量,右边“yaxis(2) ”为y2 的)
twoway line y1 time,yaxis(1) || y2 time,yaxis(2)
(与上图基本相同,就是没有点,只显示曲线)
graph twoway scatter var1 var4 || scatter var2 var4 || scatter var3 var4
(做三个点图的叠加)
graph twoway line var1 var4 || line var2 var4 || line var3 var4
(做三个线图的叠加)
graph twoway connected var1 var4 || connected var2 var4 || connected var3 var4
(叠加三个点线相连图)
更多变量:
graph matrix a b c y
(画出一个散点图矩阵,显示各变量之间所有可能的两两相互散点图)
graph matrix a b c d,half
(生成散点图矩阵,只显示下半部分的三角形区域)
用 auto 数据集:
graph matrix price mpg weight length,half by(foreign,total col(1) )
(根据 foreign变量的不同类型绘制price等四个变量的散点图矩阵,要求绘出总图,并上下排列】=具)
其他图形:
graph box y,over(x) yline(.22)
(对应 x 的每一个取值构建y 的箱型图,并在y 轴的 0.22 处划一条水平线)
graph bar (mean) y,over(x)
对应 x 的每一个取值,显示y 的平均数的条形图。括号中的“mean”也可换成median 、 sum、sd 、 p25、 p75 等graph bar a1 a2,over(b) stack
(对应在 b 的每一个取值,显示a1 和 a2 的条形图, a1 和 a2 是叠放成一根条形柱。若不写入“stack ”,则a1和 a2 显示为两个并排的条形柱)
graph dot (median)y,over(x)
(画点图,沿着水平刻度,在x 的每一个取值水平所对应的y 的中位数上打点)
qnorm x
(画出一幅分位- 正态标绘图)
rchart a1 a2 a2
(画出质量控制R 图,显示a1 到 a3 的取值范围)
简单统计量的计算:
ameans x
(计算变量x 的算术平均值、几何平均值和简单调和平均值,均显示样本量和置信区间)
mean var1 [pweight = var2]
(求取分组数据的平均值和标准误,var1 为各组的赋值,var2 为每组的频数)
summarize y x1 x2,detail
(可以获得各个变量的百分比数、最大最小值、样本量、平均数、标准差、方差、峰度、偏度)
*** 注意 ***
stata中summarize所计算出来的峰度skewness 和偏度 kurtosis有问题,与ECELL和SPSS有较大差异,建议不采用 stata的结果。
summarize var1 [aweight = var2], detail
(求取分组数据的统计量,var1 为各组的赋值,var2 为每组的频数)
tabstat X1,stats(mean n q max min sd var cv)
(计算变量X1 的算术平均值、样本量、四分位线、最大最小值、标准差、方差和变异系数)
概率分布的计算:
(1 )贝努利概率分布测试:
webuse quick
bitest quick==0.3,detail
(假设每次得到成功案例‘1’的概率等于0.3 ,计算在变量quick 所显示的二项分布情况下,各种累计概率和单个概率是多少)
bitesti 10,3,0.5,detail
(计算当每次成功的概率为0.5 时,十次抽样中抽到三次成功案例的概率:低于或高于三次成功的累计概率和恰
好三次成功概率)
(2 )泊松分布概率:
display poisson(7,6)
.44971106
(计算均值为7 ,成功案例小于等于 6 个的泊松概率)
display poissonp(7,6)
.14900278
(计算均值为7 ,成功案例恰好等于 6 个的泊松概率)
display poissontail(7,6)
.69929172
(计算均值为7 ,成功案例大于等于 6 个的泊松概率)
(3 )超几何分布概率:
display hypergeometricp(10,3,4,2)
.3
(计算在样本总量为10,成功案例为 3 的样本总体中,不重置地抽取 4 个样本,其中恰好有 2 个为成功案例的概率)
display hypergeometric(10,3,4,2)
.96666667
(计算在样本总量为10,成功案例为 3 的样本总体中,不重置地抽取 4 个样本,其中有小于或等于 2 个为成功案例的概率)
检验极端值的步骤:
常见命令: tabulate、stem、codebook、summarize、list、histogram、graph box、gragh matrix
step1. 用 codebook 、 summarize 、 histogram 、 graph boxs、graph matrix、stem看检验数据的总体情况:codebook y x1 x2
summarize y x1 x2,detail
histogram x1,norm(正态直方图)
graph box x1(箱图)
graph matrix y x1 x2,half(画出各个变量的两两x-y 图)
stem x1 (做 x1 的茎叶图)
可以看出数据分布状况,尤其是最大、最小值
step2. 用 tabulate、list细致寻找极端值
tabulate code if x1==极端值(作出x1 等于极端值时code 的频数分布表,code 表示地区、年份等序列变量,这样便可找出那些地区的数值出现了错误)
list code if x1==极端值(直接列出x1 等于极端值时code 的值,当x1 的错误过多时,不建议使用该命令)
list in -20/l(l表示last one,-20表示倒数第20 个样本,该命令列出了从倒数第20 个到倒数第一个样本的各变量值)
step3. 用 replace命令替换极端值
replace x1=? if x1==极端值
去除极端值:
keep if y<1000
drop if y>1000
对数据排序:
sort x
gsort +x
(对数据按x 进行升序排列)
gsort -x
(对数据按x 进行降序排列)
gsort -x, generate(id) mfirst
(对数据按x 进行降序排列,缺失值排最前,生成反映位次的变量id )
对变量进行排序:
order y x3 x1 x2
(将变量按照y 、x3 、 x1 、 x2 的顺序排列)
生成新变量:
gen logx1=log(x1)(得出x1的对数)
gen x1`=exp(logx1)(将logx1反对数化)
gen r61_100=1 if rank>=61&rank<=100 (若 rank 在 61 与 100 之间,则新变量r61_100 的取值为1,其他为缺失值)
replace r61_100 if r61_100!=1(“!=”表示不等于,若r61_100 取值不为 1,则将 r61_100 替换为 0 ,就是将上式中的缺失值替换为0)
gen abs(x)(取x的绝对值)
gen ceil(x)(取大于或等于x 的最小整数)
gen trunc(x)(取x的整数部分)
gen round(x)(对x进行四舍五入)
gen round(x,y)(以y为单位,对x 进行四舍五入)
gen sqrt(x)(取x的平方根)
gen mod(x,y)(取x/y的余数)
gen reldif(x,y)(取x与y的相对差异,即|x-y|/(|y|+1))
gen logit(x)(取ln[x/(1-x)])
gen x=autocode(x,n,xmin,xmax)(将x的值域,即xmax-xmin ,分为等距的n 份)
gen x=cond(x1>x2,x1,x2)(若x1>x2成立,则取x1 ,若 x1>x2 不成立,则取x2 )
sort x
gen gx=group(n)(将经过排序的变量x 分为尽量等规模的n 个组)
egen zx1=std(x1) (得出 x1的标准值,就是用 (x1-avgx1)/sdx1 )
egen zx1=std(x1),m(0) s(1)(得出 x1 的标准分,标准分的平均值为0,标准差为 1 )
egen sdx1=sd(x1)(得出x1的标准差)
egen meanx1=mean(x1) (得出 x1 的平均值)
egen maxx1=max(x1) (最大值)
egen minx1=min(x1)(最小值)
egen medx1=med(x1) (中数)
egen modex1=mode(x1) (众数)
egen totalx1=total(x1)(得出x1的总数)
egen rowsd=sd(x1 x2 x3)(得出 x1、 x2和 x3 联合的标准差)
egen rowmean=mean(x1 x2 x3) (得出 x1、 x2 和 x3 联合的平均值)
egen rowmax=max(x1 x2 x3)(联合最大值)
egen rowmin=min(x1 x2 x3)(联合最小值)
egen rowmed=med(x1 x2 x3)(联合中数)
egen rowmode=mode(x1 x2 x3)(联合众数)
egen rowtotal=total(x1 x2 x3)(联合总数)
egen xrank=rank(x)(在不改变变量x 各个值排序的情况下,获得反映x 值大小排序的xrank )数据计算器 display命令:
display x[12](显示 x 的第十二个观察值)
display chi2(n,x)(自由度为 n 的累计卡方分布)
display chi2tail(n,x)(自由度为 n 的反向累计卡方分布,chi2tail(n,x)=1-chi2(n,x))display invchi2(n,p)(卡方分布的逆运算,若chi2(n,x)=p,那么 invchi2(n,p)=x)
display invchi2tail(n,p)(chi2tail的逆运算)
display F(n1,n2,f)(分子、分母自由度分别为n1 和 n2 的累计 F 分布)
display Ftail(n1,n2,f)(分子、分母自由度分别为n1 和 n2 的反向累计 F 分布)
display invF(n1,n2,P)(F 分布的逆运算,若F(n1,n2,f)=p,那么 invF(n1,n2,p)=f)display invFtail(n1,n2,p)(Ftail的逆运算)
display tden(n,t)(自由度为n 的 t 分布)
display ttail(n,t)(自由度为n 的反向累计t 分布)
display invttail(n,p)(ttail的逆运算)
给数据库和变量做标记:
label data "~~~"(对现用的数据库做标记,"~~~" 就是标记,可自行填写)
label variable x "~~~"(对变量 x 做标记)
label values x label1(赋予变量 x 一组标签 :label1 )
label define label1 1 "a1" 2 "a2"(定义标签的具体内容:当x=1 时,标记为a1,当 x=2 时,标记为a2)频数表:
tabulate x1,sort
tab1 x1-x7,sort(做x1到x7的频数表,并按照频数以降序显示行)
table c1,c(n x1 mean x1 sd x1)(在分类变量c1 的不同水平上列出x1 的样本量和平均值)
二维交互表:
auto 数据库:
table rep78 foreign, c(n mpg mean mpg sd mpg median mpg) center row col
(rep78 ,foreign均为分类变量,rep78 为行变量, foreign为列变量,center表示结果显示在单元格中间,row 表示计算行变量整体的统计量,col表示计算列变量整体的统计量)
tabulate x1 x2,all
(做 x1 和 x2 的二维交互表,要求显示独立性检验chi2 、似然比卡方独立性检验lrchi2、对定序变量适用的等
级相关系数gamma和 taub 、以及对名义变量适用的V)
tabulate x1 x2,column chi2 (做 x1 和 x2 的二维交互表,要求显示列百分比和行变量和列变量的独立性检验——
零假设为变量之间独立无统计关系)
tab2 x1-x7,all nofreq(对x1到x7这七个变量两两地做二维交互表,不显示频数:nofreq )
三维交互表:
by x3,sort:tabulate x1 x2,nofreq col chi2(同时进行x3 的每一个取值内的x1 和 x2 的二维交互表,不显示
频数、显示列百分比和独立性检验)
四维交互表:
table x1 x2 x3,c(ferq mean x1 mean x2 mean x3) by(x4)
tabstat X1 X2,by(X3) stats(mean n q max min sd var cv) col(stats)
tabstat X1 X2,by(X3) stats(mean range q sd var cv p5 p95 median),[aw=X4](以X4为权重求X1、X2 的均值,标准差、方差等)
ttest X1=1
count if X1==0
count if X1>=0
gen X2=1 if X1>=0
corr x1 x2 x3(做x1、x2、x3的相关系数表)
swilk x1 x2 x3(用Shapiro-Wilk W test对x1、x2、x3进行正太性分析)
sktest x1 x2 x3(对x1、x2、x3进行正太性分析,可以求出峰度和偏度)
ttest x1=x2(对x1、x2的均值是否相等进行T 检验)
ttest x1,by(x2) unequal(按x2的分组方式对x1 进行 T 检验,假设方差不齐性)
sdtest x1=x2(方差齐性检验)
sdtest x1,by(x2)(按x2的分组方式对x1 进行方差齐性检验)
聚分析:
cluster kmeans y x1 x2 x3, k(3)
——依据y、 x1 、x2 、 x3 ,将本分n ,聚的核随机取
cluster kmeans y x1 x2 x3, k(3) measure(L1) start(everykth)
—— "start"用于确定聚的核,"everykth"表示将通构造三本得聚核:构造方法将本id 1 、1+3、1+3×2、1+3×3??分一、将本id2、2+3、2+3×2、2+3×3??分第二,以此推,将三
的均作聚的核;"measure" 用于算相似性和相异性的方法,"L1" 表示采用欧式距离的,也直接
可采用欧式距离(L2)和欧式距离的平方(L2squared )。 PS:个方法所得的果与SPSS所得果相同。
sort c1 c2(c1和c2两个分量排序)
by c1 c2:reg y x1 x2 x3(在c1、c2的各个水平上分行回)
bysort c1 c2:reg y x1 x2 x3 if c3=1(逗号前面相当于将上面两步合一,既排序又回,逗号后面的“if
c3=1”表示只有在c3=1 的情况下才行回)
stepwise, pr(.2): reg y x1 x2 x3(使用 Backward selection,去除 P 大于 0.2量 )
stepwise, pe(.2): reg y x1 x2 x3(使用 forward selection,去除 P小于 0.2量 )
stepwise, pr(.2) pe(.01):reg y x1 x2 x3(使用 backward-stepwise selection,取 P 在 0.01 和 0.2之的量)
stepwise, pe(.2) forward: reg y x1 x2 x3(使用 forward-stepwise selection)
reg y x1 x2 x3
predict Yhat,xb
predict u,resid
predict ustd,stdr(得残差的准)
predict std,stdp(得y估的准)
predict stdf,stdf(得y的准)
predict e,e(1,12)(得y在1到12之的估)
predict p,pr(1,12)(得y在1到12之的概率)
predict rstu,rstudent(得student的t)
predict lerg,leverage(得杠杆)
predict ckd,cooksd(得cooksd)
reg y x1 x2 x3 c1 c2
adjust x1 x2 x3,se(使得量x1、 x2 和 x3 等于其均,求y 的和准)
adjust x1 x2 x3,stdf ci(使得量x1、 x2 和 x3 等于其均,求y 的,准和置信区)
adjust x1 x2,by(c1) se ci(控制量x1 、x2 ,亦即取它的均,在分量c1 的不同水平上求y ,
准和置信区)
adjust x1 x2 x3,by(c1) stdf ci(控制量x1 、x2 、 x3 ,亦即取它的均,在分量c1 的不同水平上求y,准和置信区)
adjust x1 x2,by(c1 c2) se ci(控制量x1 、 x2,在分量c1 、 c2 的不同水平上求y 的,准和
置信区)
adjust x1 x2 x3,by(c1 c2) stdf ci(控制量x1 、 x2、 x3 ,在分量c1 、 c2 的不同水平上求y 的,
准和置信区)
adjust x1=a x2=b x3=c,se ci (当 x1=a、 x2=b 、x3=c ,求 y 的、准和置信区)
adjust x1=a x2=b x3=c,by(c1) se ci(当 x1=a、 x2=b、 x3=c ,在分量c1 的不同水平上,求y 的
、准和置信区)
adjust x1=a x2=b c1=1,by(c1) se ci(当 x1=a、 x2=b,并假所有的本均c1=1,求在分量c1 的不同水平上,因量x3 的均不同,而致的y 的不同的??)
mvreg Y1 Y2 ??: X1 X2 X3 ??(多元回)
mvreg y1 y2 y3: x1 x3 x3(多元回分析,y1 y2 y3因量,x1 x3 x3自量)
以下命令只有在行了mvreg 之后才能行
test [y1] (y1 的回系数合0)
test [y1]: x1 x2( y1 的回中x1、x2 的系数0)
test x1 x2 x3(在所有的回中,x1 、x2 、 x3 的系数均0)
test [y1=y2](y1的回和y2 的回系数相等)
test [y1=y2]: x1 x2 x3, mtest(y1和y2的回中,分x1 、x2 、 x3 的系数是否相等,若没有mtest 个命令,他的和)
test [y1=y2=y3](三个回的系数是否相等,可加mtest 以分)
test [y1=y2=y3]: x1 x2(三个回中的x1、 x2 是否相等,可加mtest )
est 命令的用法:
(1 )存回果:
reg y x1 x2 x3(不限于reg ,也可存ivreg 、 mvreg 、reg3 )
est store A
(2 )重回果:
est replay A
(3 )回果行一步分析
est for A:sum(A回果中的各个量运行sum 命令)
异方差:
得健性准
reg y x1 x2 x3 if c1==1(当分量c1=1 ,行y 和 x 的回)
reg y x1 x2 x3,robust(回后示各个自量的异方差- 健性准)estat vif(回之后得VIF )
estat hettest,mtest(异方差)
异方差的套路:
( 1 ) Breusch-pagan 法:
reg y x1 x2 x3
predict u,resid
gen usq=u^2
reg usq x1 x2 x3
求 F
display R/(1-R)*n2/n1(n1表示分子除数,n2 表示分母除数)display Ftail(??)
求 LM
display R*n(n表示本量)
display chi2tail(??)
( 2 ) white 法:
reg y x1 x2 x3
predict u,resid
gen usq=u^2
predict y
gen ysq=y^2
reg usq y ysq
求 F
display R/(1-R)*n2/n1(n1表示分子除数,n2 表示分母除数)
display Ftail(??)
求 LM
display R*n(n表示本量)
display chi2tail(??)
(3 )必要充
F 和 LM P 的命令:
display Ftail(n1,n2,a)(利用 F 求p , n1 表示分子除数,n2 表示分母除数,a F )display chi2tail(n3,b)(利用LM求p , n3 表示自由度的失量,一般等于n1, b LM)异方差的正——WLS(weighted least square estimator)
(1 )基本思路:
reg y x1 x2 x3 [aw=x1](将x1作异方差的来源,方程行修正)
上式相当于:
reg y/(x1^0.5) 1/(x1^0.5) x1/(x1^0.5) x2/(x1^0.5) x3/(x1^0.5),noconstant
(2 )正异方差的常用套路(构造h )
reg y x1 x2 x3
predict u,resid
gen usq=u^2
gen logusq=log(usq)
reg logusq x1 x2 x3
predict g
gen h=exp(g)
reg y x1 x2 x3 [aw=1/h]
异方差 hausman 检验:
reg y x1 x2 x3
est store A(将上述回归结果储存到 A 中)
reg y x1 x2 x3 [aw=1/h]
est store B
hausman A B
当因变量为对数形式时(log(y))如何预测y
reg logy x1 x2 x3
predict k
gen m=exp(k)
reg y m,noconstant
m的系数为i
y 的预测值 =i ×exp(k)
方差分析:
一元方差分析
anova y g1 / g1|g2 /(g*表示不同分类变量,计算g1 和交互项 / g1|g2 /这两种分类的y 值是否存在组内差异)anova y d1 d2 d1*d2(d*表示虚拟变量,计算d1、 d2 和 d1*d2 的这三种分类的y 值是否有组内差异)
anova y d1 d2 x1 d2*x1, continuous(x1)(x*表示连续的控制变量)
多元方差分析
webuse jaw
manova y1 y2 y3 = gender fracture gender*fracture(按性别、是否骨折及二者的交互项对y1 、y2 和 y3 进行方差分析)