数据管理等计量方法的操作典籍,有需要do文件的进入计量经济圈社群直接提取,我们会成立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,有效数字取三位,加入千分位分隔符,加入“-”表示左对齐
**对样本进行随机筛选: sample 50 //在观测案例中随机选取50%的样本,其余删除 sample 50,count //在观测案例中随机选取50个样本,其余删除
**查看与编辑数据: browse x1 x2 if x3>3 //按所列变量与条件打开数据查看器 edit x1 x2 if x3>3 //按所列变量与条件打开数据编辑器
**简单统计量的计---------------------------------------------------------- ameans x //计算变量x的算术平均值、几何平均值和简单调和平均值,均显示样本量和置信区间 mean var1 [pweight = var2] //求取分组数据的平均值和标准误,var1为各组的赋值,var2为每组的频数 summarize y x1 x2,detail //可以获得各个变量的百分比数、最大最小值、样本量、平均数、标准差、方差、峰度、偏度 summarize var1 [aweight = var2], detail //求取分组数据的统计量,var1为各组的赋值,var2为每组的频数 tabstat X1,stats(mean n q max min sd var cv //计算变量X1的算术平均值、样本量、四分位线、最大最小值、标准差、方差和变异系数
**概率分布的计算: **贝努利概率分布测试: webuse quick bitest quick==0.3,detail //假设每次得到成功案例‘1’的概率等于0.3,计算在变量quick所显示的二项分布情况下,各种累计概率和单个概率是多少 bitesti 10,3,0.5,detail //计算当每次成功的概率为0.5时,十次抽样中抽到三次成功案例的概率:低于或高于三次成功的累计概率和恰好三次成功概率
**泊松分布概率: display poisson(7,6) //计算均值为7,成功案例小于等于6个的泊松概率 display poissonp(7,6) //计算均值为7,成功案例恰好等于6个的泊松概率 display poissontail(7,6) //计算均值为7,成功案例大于等于6个的泊松概率
**超几何分布概率: display hypergeometricp(10,3,4,2) //计算在样本总量为10,成功案例为3的样本总体中,不重置地抽取4个样本,其中恰好有2个为成功案例的概率 display hypergeometric(10,3,4,2) //计算在样本总量为10,成功案例为3的样本总体中,不重置地抽取4个样本,其中有小于或等于2个为成功案例的概率
**检验极端值的步骤-------------------------------- **常见命令:tabulate、stem、codebook、summarize、list、histogram、graph box、gragh matrix **第一步,用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的茎叶图 **第二部,用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个到倒数第一个样本的各变量值 **第三部,用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的样本量和平均值
**二维交互表------------------------------ webuse 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……分为一组、将样本id为2、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 mvreg Y1 Y2 ……: X1 X2 X3……//多元回归 mvreg y1 y2 y3: x1 x3 x3 //多元回归分析,y1 y2 y3为因变量,x1 x3 x3为自变量 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命令的用法-------------------- **储存回归结果: reg y x1 x2 x3 //不限于reg,也可储存ivreg、mvreg、reg3 est store A **重现回归结果: est replay A **对回归结果进行进一步分析: **画图-------------------------------- 茎叶图: stem x1,line(2) //做x1的茎叶图,每一个十分位的树茎都被拆分成两段来显示,前半段为0~4,后半段为5~9 stem x1,width(2) //做x1的茎叶图,每一个十分位的树茎都被拆分成五段来显示,每个小树茎的组距为2 stem x1,round(100) //将x1除以100后再做x1的茎叶图
直方图: 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 //生成散点图矩阵,只显示下半部分的三角形区域 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的取值范围
|