Stata学习笔记.docx
- 文档编号:4158670
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:33
- 大小:805.99KB
Stata学习笔记.docx
《Stata学习笔记.docx》由会员分享,可在线阅读,更多相关《Stata学习笔记.docx(33页珍藏版)》请在冰豆网上搜索。
Stata学习笔记
Stata学习笔记
以下命令均采用小写字母
Chapter1stata入门
1.1打开数据
use"D:
\Stata9\auto.dta",clear用use命令打开数据
sysuseauto,clearauto为系统数据sysuse为打开系统数据的命令
1.2获取帮助
Helpsummarizesummarize为需要获取帮助对象可以改为其他的需要帮助的对象
Finditsummarize,net寻找网络帮助summarize为需要获取帮助对象
Searchsummarize,net寻找网络帮助summarize为需要获取帮助对象
显示结果
Display5+9
1.3描述统计(summarize可简写成sum)
Useatuo,clear
Summarizeprice描述price的观察值个数、平均值、标准差、最小值、最大值
Sumweightsummarize可简写成sum
Sumweightprice同时完成上面两步
1.4绘图
Scatterpriceweightscatter为绘制散点图命令
Linepriceweight,sortline为绘制折线图命令,sort为排序,绘制折线图前需要先排序
1.5生成新的数据(generate可简写成gen)
Clear
Setobs1000设置观测值的组数
Genx=_n_n为观察值得序号
Geny=x+100
1.6控制结果输出显示
Listn
1.7设置屏幕滚动
Setmoreoff先设置此项则显示时,屏幕不停止
Setmoreon先设置此项则显示时,会使显示停止
1.8清除内存中原有内容
clear
1.9设置文件存取路径(cd)
Cdd:
\statad:
\stata为路径
1.10如果想知道当前路径下有哪些文件,可以用dir命令来列示
.dir
1.11假设你想在D盘的根目录下创建一个新的文件夹mydata来存放数据文件,
命令为mkdir。
mkdird:
\mydata
1.12错误提示
Listmyvar
上述命令试图显示变量myvar,但是结果窗口仅出现如下的显示
variablemyvarnotfound
r(111);
红色信息表明,没有找到一个叫myvar的变量,的确,我们的数据中并没有
这个变量。
List巧妇难为无米之炊。
红色信息下面还有一个天兰色的r(111),用鼠标点击,即可弹进一个帮助信
息框,给出错误的更详尽解释。
再比如,我们在求五数概略时,误把sum写成了sun
.sun
unrecognizedcommand:
sun
r(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:
s
2.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&price>10000
*查看价格超过1万元或者进口车(两个条件任满足一个)
.listmakepriceifforeign==1|price>10000
*分类型查看价格超过1万元的汽车的品牌和价格
.byforeign,sort:
listmakepriceifprice>10000
2.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==0
2.8加权weight
[byvarlist:
]command[varlist][=exp][ifexp][inrange][weight][,options]
任务:
下表是2005年湖北省高考640分及以上成绩一分一段的人数统计,第一
列score为高考分数,第二列num为该分数段的人数。
现在我们要求640分及以
上考生的平均分数。
scorenum
650193
64926
64823
64716
64621
64526
64432
64323
64238
64129
64038
操作:
先将上面的表格复制,然后进入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打开示例数据和网络数据:
use
3.1.1示例数据
示例数据为STATA帮助文件中所用的数据,其后辍名为.dta,如果在STATA
软件当前路径下,直接用use命令即可打开;如果不在当前路径下,则可以使用
sysuse命令打开。
.useauto,clear//打开汽车数据auto.dta
.cdd:
///改变路径到d:
/
.useauto,clear
fileauto.dtanotfound//系统提示无法找到文件,因为auto.dta不在d:
/
r(601);
.sysuseauto,clear//无论当前路径是什么,该命令均能打开系统自带文件
3.1.2从网络获取数据
上述示例数据可能没有全部下载到你的所用的电脑中,因此简单地使用use
和sysuse命令时,可能出现错误,如
.usenlswork,clear
filenlswork.dtanotfound
此时,如果确定该数据为示例数据,可以直接通过网络获取,其命令为:
.usehttp:
//www.stata-//从网站获取数据,或者
.webusenlswork,clear//与前一命令等价,从STATA官方数据库获取数据
webuse只能从http:
//www.stata-
该网站的数据,webuse失效,只能把网站地址完全写出来。
使用该命令时必须确
保网络连接正常.
另一个网络数据较多的地方是波士登大学的数据中心,伍德里奇的《计量经
济学导论》一书中所使用的全部数据都可以通过该数据中心获得。
比如
.usehttp:
//fmwww.bc.edu/ec-p/data/wooldridge/CEOSAL1
即打开教材中例2.3中所使用的CEO数据。
use命令只能打开后辍名为“*.dta”格式的数据,.dta格式以外的数据,STATA
不能直接读取,需要从外部读入,最简单而直接的办法是复制和粘贴。
但是有时
没有其他软件,比如,我们有SAS格式或SPSS格式的数据,但没有SAS软件
和SPSS软件,此时需要用STATA提供的其他命令或者使用transfer数据格式转
化软件。
在讨论其他输入或导入数据的方法之前,我们先来学习一点数据类型的
知识。
3.2数据类型
STATA通常把变量划分为三类:
分别是数值型,字符型和日期型
3.2.1数值变量:
用0、1、2…9及+、–(正负号)与小数点“(.)”来表示。
在输入数据时,
逗号不能被识别,如1,024应该直接写成1024.
5
-5
5.2
5.2e+3
5.2e-2
后面两个数据为科学计数法的数据,分别表示5200和0.052.其中的e相当
于10,因此5.2e+3的意思是:
5.2*103=5200
数值型变量按其精度区分,又有五种类型,分别是:
存贮类型最小最大0-领域字节
---------------------------------------------------------------------
byte-127100+/-11
int-32,76732,740+/-12
long-2,147,483,6472,147,483,620+/-14
float-1.70141173319*10^381.70141173319*10^36+/-10^-364
double-8.9884656743*10^3078.9884656743*10^307+/-10^-3238
当运算精度要求很高的时候,需要将变量设置成浮点型或双精度型。
另注意1和1.0000的精度是不同的,前者在(0.5,1.5)区间内近似,而后者在
(0.99995,1.00005)区间内近似。
若多次运算反复取四舍五入,精度较低时将使
计算误差迅速变大,然而,精度高时占用的内存资源较多。
下面的命令有助于理
解变量存贮类型变换。
.clear
.setobs1//将设定一个观察值
obswas0,now1//提示信息说,之前系统中没有观察单位,现在有了一个
.gena=1//生成一个新变量a,令a取值为1
.d/*d为describ命令的略写,describ命令显示数据集的
属性信息,注意观察显示结果中,a的storagetype为float型,
浮点型为默认类型*/
Containsdata
obs:
1
vars:
1
size:
8(99.9%ofmemoryfree)
storagedisplayvalue
variablenametypeformatlabelvariablelabel
afloat%9.0g
Sortedby:
Note:
datasethaschangedsincelastsaved
.compress//在不损害信息的基础上压缩,使数据占用空间尽可能小
awasfloat,nowbyte//a由浮点型变为了字节型
.d//注意a的storagetype现在为byte型
.replacea=101/*注意a的storagetype现在自动升为int型,
因为byte最大只能为100*/
awasbytenowint
(1realchangemade)
.replacea=100
.compress
.d//重新变回到byte型
.replacea=32741//直接变到long型,因为int型最大只能到32740
.gendoubleb=1//直接生成双精度变量b
.recastdoublea//将a变成双精度变量b
.d//注意到a和b均为双精度型
3.2.2字符串变量
字符变量通常是一些身份信息,如姓名,地名。
另外,定类变量也可以用字
符变量来表示,如性别分为“男”和“女”。
字符串变量由字母或一些特殊的符号组成(如地名〈籍贯〉变量,迁出地,
住址,职业等等)。
字符串变量也可以由数字来组成,但数字在这里仅代表一些
符号而不再是数字。
字符串变量通常以引号“”注标,而且引号一般不被视同为
字符的一部分,注意这里的引号必须是英文输入状态下的引号。
字符串最多可以达244个字符。
一般用str#来表示字符的多少,如str20
表示将有20个字符。
一般三个中文字的姓名需要6个字符。
字符型示例
“String”
“string”
”string”
”string”
””//特殊字符串,表示空字符,缺失值。
””//注意与空字符串的区别,含有一个空格
”125.27”//”125.27”由于有双引号,将被视同为字符而非数值。
“$2,343.68”
“Iloveyou”
“旺材是条狗”
注意前四个字符串均不相同,大小写是不一样的,有无空格及空格的位置不
同,都表示不同的字符串。
对于”125.27”这样的数值型的字符串,可以用real()
函数或者destring命令转化成数值型变量。
具体操作见3.3.1。
3.2.3日期型变量
在STATA中,1960年1月1日被认为是第0天,因此1959年12月31日为
第-1天,2001年1月25日为15000天。
对日期型变量的讨论将在后面的时间序
3.2.4缺失值
没有意义的计算结果显示为”.”
.display2/0
另一种情况是,数据中含有缺失值,而STATA默认的缺失值也用“.”来表
示。
在有些数据文件中,缺失值不是用“.”或者空来表示的,而是用-9996等
来表示,如果要将其全部替换为“.”,或者反之,将“.”替换为-9996,命令
为:
.mvencodeage,mv(-9996)
.mvdecodeage,mv(-9996)
3.3数据类型转化
任务:
将destring1,destring2和tostring中的数据类型进行相互转化
*3.3.1字符型转化成数值型:
destring
*destring1数据中的数据全为字符型,转换为数值型
.webusedestring1,clear
.des/*注意到所有的变量存贮类型(storagetype)均为字符型str#,
其中#号表示字符串长度*/
Containsdatafromhttp:
//www.stata-
obs:
10
vars:
53Mar200510:
15
size:
240(99.9%ofmemoryfree)
storagedisplayvalue
variablenametypeformatlabelvariablelabel
idstr3%9s
numstr3%9s
codestr4%9s
totalstr5%9s
incomestr5%9s
.sum//因为所有变量为字符型,所以不能进行数值计算
.gennincom=incom+10//因字符不能进行四则运算,不能进行加法运算
*typemismatch//系统提示类型不匹配,因为income为字符型,10为数值型
.destring,replace//全部转换为数值型,replace表示将原来的变量(值)更新
.sum//注意到转换为数值型后,可以求五数概略了
.gennincom=income*1.3//转换后,可以运算,工资终于涨了30%!
.listnincomincome//工资终于涨了30%!
*----------------将字符型数据转换为数值型数据:
去掉字符间的空
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Stata 学习 笔记
![提示](https://static.bdocx.com/images/bang_tan.gif)