Stata上机实验笔记.docx
《Stata上机实验笔记.docx》由会员分享,可在线阅读,更多相关《Stata上机实验笔记.docx(10页珍藏版)》请在冰点文库上搜索。
Stata上机实验笔记
Stata上机实验笔记
Stata上机实验
Stata统计软件包是目前世界上最著名的统计软件之一,国外将Stata与SAS、SPSS一起被并称为三大权威软件。
它同时具有数据管理软件、统计分析软件、绘图软件、矩阵计算软件和程序语言的特点,几乎可以完成全部复杂的统计分析工作。
Stata有什么优势?
1。
Stata的命令语句极为简洁明快,易学易记。
2。
强大的帮助信息。
本地帮助Help命令名在线帮助Findit命令名
3。
始终处于计量经济学和统计学的最前沿。
许多Stata程序员会针对计量经济学发展编写一些最新的程序(ADO文件),Stata提供了严谨、简练而灵活的程序语句,用户可以编写自己的命令和函数,同时可随时到Stata网站寻找并下载最新的升级文件。
下载后可以直接使用,也可以自行修改、添加功能。
(例如当前流行的面板单位根和面板门限数据,均可以安装下载使用)
不同版本对样本容量、变量个数、矩阵阶数、宏的字符长度等有着不同的限制。
以SE版为例,其最大变量个数为*****,最大字符长度为244字节,最大矩阵阶数为*****(即*****?
*****)。
Stata默认值为:
最大变量个数为5000,最大矩阵阶数为400,最大内存为10兆。
如果用户需要更多的内存或者更多的变量,可以在命令栏输入如下命令进行扩展。
setmaxvar5000<最大变量个数5000个。
>setmemory50m<占内存50兆。
>最重要的有三类文件占内存50兆。
>最大变量个数5000个。
>
1。
文件名.dta数据文件2。
文件名.do命令文件3。
文件名.ado程序文件
如果不加改变,安装时Stata会将系统程序安装到:
C:
\\Programfile\\stata10中。
将所用系统自带的一些系统数据、应用程序、帮助文件安装到C:
\\Programfile\\stata10\\ado\\base中将所有升级程序安装到:
C:
\\Programfile\\stata10\\ado\%update中
1。
所有的系统自带数据可以利用sysuse命令打开。
2。
Use命令只能打开C:
\\data或者D:
\\data中的数据。
3。
如果需要打开其他文件夹的数据,必须改变目录(例如,将自己的数据放入D:
\\abc)
cd\”
或者直接file------open
特别注意:
1。
Stata的命令区分大小写。
2。
大部分命令可以缩写。
use打开数据文件,一般加clear选型清空内存中现有数据。
sysuse打开系统数据文件。
describe描述数据
edit利用数据编辑器进行数据编辑
list类似于edit,但只能显示不能修改数据。
display显示计算结果。
经常写为:
di
summarize求某个变量的观察值个数、平均值、标准差、最小值和最大值。
经常写为:
sum
scatter生成两个变量的散点图。
setobs定义样本个数(使用前一定要用drop或者clear命令清空)generate建立新变量并赋值。
经常写为gen
举例:
画出Y=X2的曲线图
drop_all(dropdatafrommemory)setobs100(make100observations)genx=_n(x=1,2,3,..,100)geny=x^2(y=2,4,9,..,*****)
scatteryx(makeagraph)
stata命令格式
[byvarlist:
]command[varlist][=exp][ifexp][inrange][weight][,options]
1。
Command命令动词,经常用缩写。
2。
varlist表示一个变量或者多个变量,多个变量之间用空格隔开。
如sumpriceweight
3。
byvarlist分类信息按照某一变量的不同特性分类4。
=exp赋值及运算
5。
ifexp挑选满足条件的数据6。
inrange对数据进行范围筛选7。
Weight给数据赋一个权重
8。
options命令增加一些可选信息
Stata数据处理
1。
Stata的数据格式为文件名.dta
2。
对于系统自带数据文件,任何情况下可以用sysuse命令打开。
3。
对于C:
\\data(或者D:
\\data)下的文件,可以使用use命令打开。
4。
放在其他目录的文件可以利用设置目录或者“打开”菜单打开。
Stata数据类型
数值型:
用0、1、2…9及+、C(正负号)与小数点和()来表示。
字符型:
字符串变量由字母数字或一些特殊的符号组成(如地名、住址,职
业等等)。
注意:
数字不表示大小信息,如电话、身份证号等。
字符型数据必须要加“”。
日期型:
在Stata中,1960年1月1日被认为是第0天,因此1959年12月31日为第-1天,表示形式为:
jan/10/2001或者10jan2001。
数据导入
1。
直接录入。
利用dataeditor
2。
在Excel或者记事本文件编辑好后导入。
直接粘贴
3。
Import导入
除了csv格式,还可以导入txt格式和raw格式。
添加标签
1。
为整个数据添加标签:
例如,将数据命名为“工资表”。
菜单:
Data-Labels-Labeldataset命令:
labeldata“工资表“
2。
为变量增加标签,例如,给变量wage增加标签“年工资总额”菜单:
Data-Labels-Labelvariables命令labelvariablewage“年工资总额\3.为变量值增加标签
例如:
为变量marrid添加数值标签marry:
1=married;0=Unmarried菜单:
Data-Labels-Labelvalues-DefineormodifylabelvaluesData-Labels-Labelvalues-Assignlabelvaluestovariable
命令:
.labeldefinemarry1“married”0“unmarried\.labelvaluesmarriedmarry
Stata作图
STATA提供各种曲线类型,包括点(scatter)、线(line)、面(area),直方图(histogram)、
条形图(bar)、饼图(pie)、函数曲线(function)以及矩阵图(matrix)等。
同时,对时间序列数据有以ts开头的一系列特殊命令,如tsline。
还有一类是对双变量的回归拟合图(lfit、qfit、lowess)等。
小样本OLS
小样本OLS假设条件较为严格假设1:
二者之间存在线性关系
y=a0+a1*x1+a2*x2+...+ak*xk+εy=Xb+ε
假设2:
X是满秩的,i.e.rank(X)=k
假设3:
干扰项的条件期望为零(严格外生性)*E[ε|X]=0
通过上课的学习我们得到:
?
?
(X'X)?
1X'yβ
习惯上我们用
y_hat=X*b/*被解释变量的拟合值*/e=y-y_hat=y-Xb/*残差*/
建立回归方程
打开系统文件auto,建立如下方程:
sysuseauto,clear
regresspricempgweightforeign
Regress命令详解:
regressdepvar[indepvars][if][in][weight][,options]
1。
要求方程省略常数项(自己设置常数项)
regpricempgweightforeign,nocons(hascons)2。
稳健性估计(一般用于大样本OLS)
regpricempgweightforeign,vce(robust)或者:
regpricempgweightforeign,r3。
设置置信区间(默认95%)
regpricempgweightforeign,level(99)4。
标准化系数
regpricempgweightforeign,beta5。
部分数据回归
regpricempgweightlengthforeignin1/30(为什么foreign被drop掉?
)
regpricempgweightlengthifforeign==0
回归结果解读
系数/标准误差=t值
P值系数=0的概率为p值在5%的水准上显著不为0否则和0的差异不显著
95%下限=估计值-t值*标准误差95%下限=估计值+t值*标准误差置信区间:
系数在95%的概率下会落在---之间跨越0,则与0不显著
模型常用的其他形式:
对数平方项n次方指数交乘项
虽然对函数形式的选择有检验方法,但最好还是从“经济意义”角度确定。
回归后预测值的获得Predict
1。
拟合值的获得:
predictyhat,xb或者predictyhat2。
残差的获得
predicte,residuals或者predicte,res
回归的假设检验Test命令
例一sysuseauto,clearregpricempgweightlength1。
检验参数的联合显著性2。
分别检验各参数的显著性
3。
三个参数对被解释变量的影响相同
例二:
usewage2,clear
reglnwageeductenureexperexpersq
1。
教育(educ)和工作时间(tenure)对工资的影响相同。
testeduc=tenure
2。
工龄(exper)对工资没有影响
testexper或者testexper=03。
检验educ和tenure的联合显著性
testeductenure或者test(educ=0)(tenure=0)
例三:
生产函数productionuseproduction,clearreglnylnllnktestlnllnk
test(lnl=0.8)(lnk=0.2)testlnk+lnl=1
非线性检验:
testnl例一.sysuseauto
genweight2=weight^2
regpricempgtrunklengthweightweight2foreigntestnl_b[mpg]=1/_b[weight]
testnl(_b[mpg]=1/_b[weight])(_b[trunk]=1/_b[length])
例二:
打开productionreglnylnllnk
testnl_b[lnl]*_b[lnk]=0.25
testnl_b[lnl]*_b[lnk]=0.5
大样本OLS
大样本OLS经常采用稳健标准差估计(robust)
稳健标准差是指其标准差对于模型中可能存在的异方差或自相关问题不敏感,基于稳健标准差计算的稳健t统计量仍然渐进分布t分布。
因此,在Stata中利用robust选项可以得到异方差稳健估计量。
约束回归定义约束条件
constraintdefinen条件约束回归语句
Cnsreg被解释变量解释变量,constraints(条件编号)
例一:
打开productionconsdef1lnl+lnk=1cnsreglnylnllnk,c
(1)
例二:
sysuseauto,clear
consdef1price=weight
consdef2displacement=weightconsdef3gear_ratio=-foreign
cnsregmpgpriceweightdisplacementgear_ratioforeignlength,c(1-3)
(本题没有什么经济意义,只是让大家熟悉这种方法)
矩阵运算
1。
手动建立矩阵命令:
matrix
Matrixinput矩阵变量名=(矩阵)同一行元素用,分隔不同行元素用\\分割
建立矩阵:
368511721816
显示矩阵变量
matdir显示矩阵内容Matlist矩阵变量
常用矩阵运算:
C=A+BA-BA*B
Kronecker乘积:
C=A#B
常用矩阵函数:
trace(m1)m1的迹
Diag(v1)向量的对角矩阵inv(m1)m1的逆矩阵
2。
还可以将变量转换为矩阵mkmat变量名表,mat(矩阵名)
练习:
sysuseauto
regpricempgweightforeign要求:
利用矩阵运算手动计算出参数gencons=1
mkmatprice,mat(y)
mkmatmpgweightforeigncons,mat(X)matb=inv(X'*X)*X'*ymatlistbmatlistymatlistX
我们可以利用矩阵运算的方法将回归结果展现的所有统计量都手动计算出来。
逐步回归法
逐步回归法分为逐步剔除和逐步加入。
逐步剔除又分为逐步剔除(Backwardselection)和逐步分层剔除(Backwardhierarchicalselection)1。
逐步剔除
stepwise,pr(显著性水平):
回归方程例如:
对auto数据
Stepwise,pr(0.05):
regpricempgrep78headroomtrunkweightlengthturndisplacementgear_ratioforeign
2。
逐个分层剔除
Stepwise,pr(0.05)hier:
regpricempgrep78headroomtrunkweightlengthturndisplacementgear_ratioforeign去掉foreign重新做一遍
逐步加入又分为逐步加入(Forwardselection)和逐步分层加入(Forwardhierarchicalselection)1。
逐步加入
stepwise,pe(显著性水平):
回归方程例如:
对auto数据
Stepwise,pe(0.05):
regpricempgrep78headroomtrunkweightlengthturndisplacementgear_ratioforeign
2。
逐个分层加入
Stepwise,pe(0.05)hier:
regpricempgrep78headroomtrunkweightlength
turndisplacementgear_ratioforeign
残差点的图形表示
rvfplot:
残差拟合值图
可以加参数yline(0)将e与?
y画在一起rvpplotx1:
残差预测值图
将e与x1画在一起avplotavplotslvr2plot
离群样本点与杠杆样本点
离群样本点:
残差值较大的样本点
杠杆样本点:
与样本整体(X'X)很不相同的少数样本点离群样本点:
regpricempgweightforeignpredicte,res
Listmakepricee
杠杆样本点:
regpricempgweightforeignpredictlev,leveragelvr2plot
lvr2plot,mlabel(make)
作业1
考察工资方程(数据文件:
cps78-85.dta)Log(wage)=Xb+uX中包括educ=教育、exper=工龄、exper2=工龄平方、tenure=现有岗位的任期、female=性别(女=1)、y85=85年、y85educ=交叉积、y85fem=交叉积。
1。
建立回归模型
2。
给出各参数的99%置信区间
3。
检验H1:
educ、tenure对工资影响相同、H2:
教育对收入没有影响4。
预测拟合值和残差
5。
观测离群值和杠杆值1.建议回归模型:
设
Log(wage)=x1educ+x2exper+x3exper2+x4tenure+x5female+x6y85+x7y85educ+x8y85fem
2.给出各参数的99%的置信区间
RegLogeducexperexper2tenurefemaley85y85educy85fem,level(99)3.检验H1:
educ,tenure对工资影响相同Testeduc=tenure
检验H2:
testeduc
4.预测模拟值:
predictyhat预测残差值:
predicte,res5.观测离群值:
极大似然估计优点:
1.在所有一致的,渐进正太的估计量中,MLE是渐进最优的。
2.大样本数据,特别是非线性回归的估计具有优势。
缺点:
1.需要假设特定的概率密度形式2.小样本性质一般。
MLE的基本步骤
1.推导最大似然函数
2.编写似然函数的stata程序(可选:
似然函数的一阶和二阶导数d1,d2)3.设定解释变量和被解释变量:
mlmodel命令4.估计最大似然函数:
mlmaximize命令
举一个最简单的多元线性回归的例子:
假设