以下命令均采用小写字母Chapter1stata入门1.1打开数据useD:\Stata9\auto.dta,clear用use命令打开数据sysuseauto,clearauto为系统数据sysuse为打开系统数据的命令1.2获取帮助Helpsummarizesummarize为需要获取帮助对象可以改为其他的需要帮助的对象Finditsummarize,net寻找网络帮助summarize为需要获取帮助对象Searchsummarize,net寻找网络帮助summarize为需要获取帮助对象显示结果Display5+91.3描述统计(summarize可简写成sum)Useatuo,clearSummarizeprice描述price的观察值个数、平均值、标准差、最小值、最大值Sumweightsummarize可简写成sumSumweightprice同时完成上面两步1.4绘图Scatterpriceweightscatter为绘制散点图命令Linepriceweight,sortline为绘制折线图命令,sort为排序,绘制折线图前需要先排序1.5生成新的数据(generate可简写成gen)ClearSetobs1000设置观测值的组数Genx=_n_n为观察值得序号Geny=x+1001.6控制结果输出显示Listn1.7设置屏幕滚动Setmoreoff先设置此项则显示时,屏幕不停止Setmoreon先设置此项则显示时,会使显示停止1.8清除内存中原有内容clear1.9设置文件存取路径(cd)Cdd:\statad:\stata为路径1.10如果想知道当前路径下有哪些文件,可以用dir命令来列示.dir1.11假设你想在D盘的根目录下创建一个新的文件夹mydata来存放数据文件,命令为mkdir。mkdird:\mydata1.12错误提示Listmyvar上述命令试图显示变量myvar,但是结果窗口仅出现如下的显示variablemyvarnotfoundr(111);红色信息表明,没有找到一个叫myvar的变量,的确,我们的数据中并没有这个变量。List巧妇难为无米之炊。红色信息下面还有一个天兰色的r(111),用鼠标点击,即可弹进一个帮助信息框,给出错误的更详尽解释。再比如,我们在求五数概略时,误把sum写成了sun.sununrecognizedcommand:sunr(199);显示说不认识sun这个命令。附录:常见命令Chapter2命令语句2.1掌握命令语句的格式[byvarlist:]command[varlist][=exp][ifexp][inrange][weight][,options]注:[]表示可有可无的项,显然只有command是必不可少的,下面结合例子分项来讲解命令的各个组成部分。2.2命令command[byvarlist:]command[varlist][=exp][ifexp][inrange][weight][,options].cdd:/stata9.useauto,clear//打开美国汽车数据文件auto.dta,后面的clear表示先清除内存中可能存在的数据集.summarize/*很多命令可单独使用,单独使用时,一般是对所有变量进行操作,等价于后面加上代表所有变量的_all。*/.summarize_all/注意到该命令输出结果与上一个命令完全一样.sum//与前一命令等价,sum为summarize的略写.susu是summarize的最简化略写,不能再简化为s.s//简写前提是不引起混淆。执行这个命令将出现错误信息unrecognizedcommand:s2.3变量varlist[byvarlist:]command[varlist][=exp][ifexp][inrange][weight][,options]varlist表示一个变量,或者多个变量,多个变量之间用空格隔开。.cdd:/stata9.useauto,clear.sumprice//求价格的观察值个数,平均值,方差,最小值和最大值.sup//变量和命令均可略写,注意到两个结果完全一样.sut//分数据中有两个变量的开首字母为t(trunk和turn),所以STATA认为t为模糊的省略。mambiguousabbreviation/红色为错误信息.sumtrtu//求trunk和turn变量的五数概略统计变量名称除以下字符不能用作变量名外,任何字母、字母与数字(单独的数字也不允许)组合均可用做变量名:_all_bbyte_coef_consdoublefloatifinintlong_n_N_pi_pred_rc_se_skipusingwith基本要求如下:_第一个字元可以是英文字母或,但不能是数字;_最多只能包括32个英文字母、数字或下划线;_由于STATA保留了很多以“_“开头的内部变量,所以最好不要用为第一个字元来定义变量。2.4分类操作byvarlist[byvarlist:]command[varlist][=exp][ifexp][inrange][weight][,options]如果需要分别知道国产车和进口车的价格和重量,可以采用分类操作来求得,.cdd:/stata9.useauto,clear.byforeign:sumpriceweight//分别计算国产车和进口车的价格和重量但如果执行下面两个命令,将出现错误*/.sortprice//按价格从低到高重新排序.byforeign:sumpriceweight*notsorted/*系统提示没有排序,这是因为byvarlist在执行时要求内存中的数据是按照by后面的变量排序的。当我们用sortprice重新排序后,就打乱了原来按照foreign的排序,所以出现了错误提示。更正的办法是:*/.sortforeign//按国产车和进口车排序.byforeign:sumpriceweight*更简略的方式是把两个命令用一个组合命令来写。.byforeign,sort:sumpriceweight如果不想从小到大排序,而是从大到小排序,其命令为gsort。.gsort-price/按价格从高到低排序.gsortforeign–price/*先把国产车都排在前,进口车排在后面,然后在国产车内再按价格从大小到排序,在进口车内部,也按从大到小排序*/2.5赋值及运算=exp[byvarlist:]command[varlist][=exp][ifexp][inrange][weight][,options]例:生成一个新的价格变量nprice,该变量的取值为原汽车价格变量price的基础上涨10元.cdd:/stata9.useauto,clear.gennprice=price+10//生成新变量nprice,其值为price+10.listpricenprice//比较一下两个变量的取值/*上面的命令generate(略写为gen)生成一个新的变量,新变量的变量名为nprice,新的价格在原价格的基础上均增加了10元。.replacenprice=nprice-10/*命令replace则直接改变原变量的赋值,nprice调减后与price变量取值相等*/.listpricenprice//再比较一下两个变量,相等。2.6条件表达式ifexp[byvarlist:]command[varlist][=exp][ifexp][inrange][weight][,options]例:若只想查看国产车的品牌和价格,则加入筛选条件ifforeign==0*/.cdd:/stata9.useauto,clear.listmakepriceifforeign==0*只查看价格超过1万元的进口车(同时满足两个条件),则.listmakepriceifforeign==1&price10000*查看价格超过1万元或者进口车(两个条件任满足一个).listmakepriceifforeign==1|price10000*分类型查看价格超过1万元的汽车的品牌和价格.byforeign,sort:listmakepriceifprice100002.7范围筛选inrange[byvarlist:]command[varlist][=exp][ifexp][inrange][weight][,options]如果要计算较低的前10台车的平均价格,则要先按价格排序,然后仅对前10个车的价格求平均值.cdd:/stata9.useauto,clear.sortprice.sumpricein1/5注意“1/5”中,斜杠不是除号,而是从1到5的意思,即1,2,3,4,5。如果要计算前10台车中的国产车的平均价格,则可将范围和条件筛选联合使用。.sumpricein1/10ifforeign==02.8加权weight[byvarlist:]command[varlist][=exp][ifexp][inrange][weight][,options]任务:下表是2005年湖北省高考640分及以上成绩一分一段的人数统计,第一列score为高考分数,第二列num为该分数段的人数。现在我们要求640分及以上考生的平均分数。scorenum65019364926648236471664621645266443264323642386412964038操作:先将上面的表格复制,然后进入STATA,执行如下命令.clear//清空STATA.edit然后把光标定位在表格的第一行第一列,点右键,选择粘贴(paste),上表数据便被复制到STATA中,退出数据编辑器sumscore//思考:得到的结果是640分及以上考生的平均分吗?简单地使用sum命令得到的平均成绩显然是不正确的,因为各个分数下的人数是不一样的,正确的计算需要加权,加权的办法是.sumscore[weight=num]/*加权计算,比较该结果与sumscore的区别,实际上,不用权重选项时,相当于权重相等。*/.sumscore[w=n]//w为weight的略写,n为num的简写,两命令等价2.9其他可选项,options[byvarlist:]command[varlist][=exp][ifexp][inrange][weight][,options]许多命令都有一些可选项例如,我们不仅要计算平均成绩,还想知道成绩的中值,方差,偏度和峰度等*/.sumscore,detail.sumscore,d//d为detail的略写,两个命令完全等价注意,结果中显示了1%,5%等分位数,意思是把变量从小到大排序,第1%位置处的取值是多少,第10%的位置上的取值是多少。显然,50%位置处的取值是中位数。此外,加了detail选项后,还得到最小的前5个数,最大的5个数,以及峰度和偏度等。*再如,list命令也有一些可选项.cdd:/stata9.useauto,clear.listpricein1/30,sep(10)//每10个观察值之间加一横线.listpricein10/30,sep(2)//每2个观察值之间加一横线.listprice,nohead//不要表头Chapter3数据3.1打开示例数据和网络数据:use3.1.1示例数据示例数据为STATA帮助文件中所用的数据,其后辍名为.dta,如果在STATA软件当前路径下,直接用use命令即可打开;如果不在当前路径下,则可以使用sysuse命令打开。.useauto,clear//打开汽车数据auto.dta.cdd:///改变路径到d:/.useauto,clearfileauto.dtanotfound//系统提示无法找到文件,因为auto.dta不在d:/r(601);.sysuseauto,clear//无论当前路径是什么,该命令均能打开系统自带文件3.1.2从网络获取数据上述示例数据可能没有全部下载到你的所用的电脑中,因此简单