搜档网
当前位置:搜档网 › stata回归分析完整步骤-吐血推荐

stata回归分析完整步骤-吐血推荐

stata回归分析完整步骤-吐血推荐
stata回归分析完整步骤-吐血推荐

stata回归分析完整步骤——吐血推荐

****下载连乘函数prod,方法为:findit dm71

sort stkcd date //对公司和日期排序

gen r1=1+r //r为实际公司的股票收益率

gen r2=1+r_yq //r_yq为公司的预期股票收益率

egen r3=prod(r1),by(stkcd date) //求每个公司事件日的累计复合收益率

egen r4=prod(r2),by(stkcd date) //求每个公司事件日的累计预期的复合收益率

gen r=r4-r3

capture clear (清空内存中的数据)

capture log close (关闭所有打开的日志文件)

set mem 128m (设置用于stata使用的内存容量)

set more off (关闭more选项。如果打开该选项,那么结果分屏输出,即一次只输出一屏结果。你按空格键后再输出下一屏,直到全部输完。如果关闭则中间不停,一次全部输出。)set matsize 4000 (设置矩阵的最大阶数。我用的是不是太大了?)

cd D: (进入数据所在的盘符和文件夹。和dos的命令行很相似。)

log using (文件名).log,replace (打开日志文件,并更新。日志文件将记录下所有文件运行后给出的结果,如果你修改了文件内容,replace选项可以将其更新为最近运行的结果。)

use (文件名),clear (打开数据文件。)

(文件内容)

log close (关闭日志文件。)

exit,clear (退出并清空内存中的数据。)

假设你清楚地知道所需的变量,现在要做的是检查数据、生成必要的数据并形成数据库供将来使用。检查数据的重要命令包括codebook,su,ta,des和list。其中,codebook提供的信息最全面,缺点是不能使用if条件限制范围,所以,有时还要用别的帮帮忙。su空格加变量名报告相应变量的非缺失的观察个数,均值,标准差,最小值和最大值。ta空格后面加一个(或两个)变量名是报告某个变量(或两个变量二维)的取值(不含缺失值)的频数,比率和按大小排列的累积比率。des后面可以加任意个变量名,只要数据中有。它报告变量的存储的类型,显示的格式和标签。标签中一般记录这个变量的定义和单位。list报告变量的观察值,可以用if或in来限制范围。所有这些命令都可以后面不加任何变量名,

报告的结果是正在使用的数据库中的所有变量的相应信息。说起来苍白无力,打开stata 亲自实验一下吧。

顺带说点儿题外话。除了codebook之外,上述统计类的命令都属于r族命令(又称一般命令)。执行后都可以使用return list报告储存在r()中的统计结果。最典型的r族命令当属summarize。它会把样本量、均值、标准差、方差、最小值、最大值、总和等统计信息储存起来。你在执行su之后,只需敲入return list就可以得到所有这些信息。其实,和一般命令的return命令类似,估计命令(又称e族命令)也有ereturn命令,具有报告,储存信息的功能。在更复杂的编程中,比如对回归分解,计算一些程序中无法直接计算的统计量,这些功能更是必不可少。

检查数据时,先用codebook看一下它的值域和单位。如果有-9,-99这样的取值,查一下问卷中对缺失值的记录方法。确定它们是缺失值后,改为用点记录。命令是replace (变量名)=. if (变量名)==-9。再看一下用点记录的缺失值有多少,作为选用变量的一个依据。得到可用的数据后,我会给没有标签的变量加上注解。或者统一标签;或者统一变量的命名规则。更改变量名的命令是ren (原变量名)空格(新变量名)。定义标签的命令是labe l var (变量名)空格”(标签内容)”。整齐划一的变量名有助于记忆,简明的标签有助于明确变量的单位等信息。

如果你需要使用通过原始变量派生出的新变量,那么就需要了解gen,egen和replace这三个命令。gen和replace常常在一起使用。它们的基本语法是gen (或replace)空格(变量名)=(表达式)。二者的不同之处在于gen是生成新变量,replace是重新定义旧变量。虚拟变量是我们常常需要用到的一类派生变量。如果你需要生成的虚拟变量个数不多,可以有两种方法生成。一种是简明方法:gen空格(变量名)=((限制条件))[这外面的小括弧是命令需要的,里面的小括弧不是命令需要的,只是说明“限制条件”并非命令]。如果某个观察满足限制条件,那么它的这个虚拟变量取值为1,否则为0。另一种要麻烦一点。就是

gen (变量名)=1 if (取值为一限制条件)

replace(相同的变量名)=0 if (取值为零的限制条件)

两个方法貌似一样,但有一个小小的区别。如果限制条件中使用的变量都没有任何缺失值,那么两种方法的结果一样。如果有缺失值,第一种方法会把是缺失值的观察的虚拟变量都定义为0。而第二种方法可以将虚拟变量的取值分为三种,一是等于1,二是等于0,三是等于缺失值。这样就避免了把本来信息不明的观察错误地纳入到回归中去。下次再讲如何方便地生成成百上千个虚拟变量。

大量的虚拟变量往往是根据某个已知变量的取值生成的。比如,在某个回归中希望控制每个观察所在的社区,即希望控制标记社区的虚拟变量。社区数目可能有成百上千个,如果用上次的所说的方法生成就需要重复成百上千次,这也太笨了。大量生成虚拟变量的命令如下;ta (变量名), gen((变量名))

第一个括号里的变量名是已知的变量,在上面的例子中是社区编码。后一个括号里的变量名是新生成的虚拟变量的共同前缀,后面跟数字表示不同的虚拟变量。如果我在这里填入d,那么,上述命令就会新生成d1,d2,等等,直到所有社区都有一个虚拟变量。

在回归中控制社区变量,只需简单地放入这些变量即可。一个麻烦是虚拟变量太多,怎么简单地加入呢?一个办法是用省略符号,d*表示所有d字母开头的变量,另一法是用破折号,d1-d150表示第一个到第150个社区虚拟变量(假设共有150个社区)。

还有一种方法可以在回归中直接控制虚拟变量,而无需真的去生成这些虚拟变量。使用命令areg可以做到,它的语法是

areg (被解释变量)(解释变量), absorb(变量名)

absorb选项后面的变量名和前面讲的命令中第一个变量名相同。在上面的例子中即为社区编码。回归的结果和在reg中直接加入相应的虚拟变量相同。

生成变量的最后一招是egen。egen和gen都用于生成新变量,但egen的特点是它更强大的函数功能。gen可以支持一些函数,egen支持额外的函数。如果用gen搞不定,就得用ege n想办法了。不过我比较懒,到现在为止只用用取平均、加和这些简单的函数。

有的时候数据情况复杂一些,往往生成所需变量不是非常直接,就需要多几个过程。曾经碰到原始数据中记录日期有些怪异的格式。比如,1991年10月23日被记录为19911023。我想使用它年份和月份,并生成虚拟变量。下面是我的做法:

gen yr=int(date)

gen mo=int((data-yr*10000)/100)

ta yr, gen( yd)

ta mo, gen( md)

假设你已经生成了所有需要的变量,现在最重要的就是保存好你的工作。使用的命令是sav e空格(文件名),replace。和前面介绍的一样,replace选项将更新你对数据库的修改,所以一定要小心使用。最好另存一个新的数据库,如果把原始库改了又变不回去,就叫天不应叫地不灵了。

前面说的都是对单个数据库的简单操作,但有时我们需要改变数据的结构,或者抽取来自不同数据库的信息,因此需要更方便的命令。这一类命令中我用过的有:改变数据的纵横结构的命令reshape,生成退化的数据库collapse,合并数据库的命令append和merge。

纵列(longitudinal)数据通常包括同一个行为者(agent)在不同时期的观察,所以处理这类数据常常需要把数据库从宽表变成长表,或者相反。所谓宽表是以每个行为者为一个观察,不同时期的变量都记录在这个观察下,例如,行为者是厂商,时期有2000、2001年,变量是雇佣人数和所在城市,假设雇佣人数在不同时期不同,所在城市则不变。宽表记录的格式是每个厂商是一个观察,没有时期变量,雇佣人数有两个变量,分别记录2000年和20 01年的人数,所在城市只有一个变量。所谓长表是行为者和时期共同定义观察,在上面的

例子中,每个厂商有两个观察,有时期变量,雇佣人数和所在城市都只有一个,它们和时期变量共同定义相应时期的变量取值。

在上面的例子下,把宽表变成长表的命令格式如下:

reshape long (雇佣人数的变量名), i((标记厂商的变量名)) j((标记时期的变量名)) 因为所在城市不随时期变化,所以在转换格式时不用放在reshape

long后面,转换前后也不改变什么。相反地,如果把长表变成宽表则使用如下命令reshape wide (雇佣人数的变量名), i((标记厂商的变量名)) j((标记时期的变量名)) 唯一的区别是long换成了wide。

collapse的用处是计算某个数据库的一些统计量,再把它存为只含有这些统计量的数据库。用到这个命令的机会不多,我使用它是因为它可以计算中位数和从1到99的百分位数,这些统计量在常规的数据描述命令中没有。如果要计算中位数,其命令的语法如下

collapse (median) ((变量名)), by((变量名))

生成的新数据库中记录了第一个括号中的变量(可以是多个变量)的中位数。右面的by选项是根据某个变量分组计算中位数,没有这个选项则计算全部样本的中位数。

合并数据库有两种方式,一种是增加观察,另一种是增加变量。第一种用append,用在两个数据库的格式一样,但观察不一样,只需用append空格using空格(文件名)就可以狗尾续貂了。简单明了,不会有什么错。另一种就不同了,需要格外小心。如果两个数据库中包含共同的观察,但是变量不同,希望从一个数据库中提取一些变量到另一个数据库中用m erge。完整的命令如下:

use

(文件名)

[打开辅助数据库]

sort (变量名)

[根据变量排序,这个变量是两个数据库共有的识别信息]

save (文件名),

replace

[保存辅助数据库]

use

(文件名)

[打开主数据库]

sort (变量名)

[对相同的变量排序]

merge (变量名) using (文件名), keep((变量名))

[第一个变量名即为前面sort后面的变量名,文件名是辅助数据库的名字,后面的变量名是希望提取的变量名]

ta

_merge

[显示_merge的取值情况。_merge等于1的观察是仅主库有的,等于2的是仅辅助库有的,等于3是两个库都有的。]

drop if

_merge==2

[删除仅仅来自辅助库的观察]

drop

merge

[删除_merge]

save (文件名),

replace

[将合并后的文件保存,通常另存]

讲到这里似乎对于数据的生成和处理应该闭嘴了。大家可能更想听听估计、检验这些事情。但我并不想就此止住,因为实际中总是有一些简单套用命令无法轻易办到的特殊要求。此时至少有两条路可以通向罗马:一是找到更高级的命令一步到位;二是利用已知简单命令多绕几个圈子达到目的。

下面讲一个令我刻骨铭心的经历,这也是迄今我所碰到的生成新数据中最繁复的了。原始数据中包含了可以识别属于同一个家庭中所有个人的信息和家庭成员与户主关系的信息。目的是利用这些信息建立亲子关系。初步的构想是新数据库以子辈为观察,找到他们的父母,把父母的变量添加到每个观察上。我的做法如下:

use

a1,clear

[打开全部样本数据库]

keep if

gender==2&agemos>=96&a8~=1&line<10

[保留已婚的一定年龄的女性]

replace a5=1 if

a5==0

[变量a5标记和户主的关系。等于0是户主,等于1是户主的配偶。这里不加区分地将户主及其配偶放在一起。]

keep if a5==1|a5==3|a5==7

[保留是户主(=1),是户主的子女(=3),或是户主的儿媳(=7)的那些人。]

ren h

hf

[将所需变量加上后缀f,表示女性]

ren line

lf

[将所需变量加上后缀f,表示女性]

sort wave hhid

save

b1,replace

[排序并保存]

keep if

a5f==1

[留下其中是户主或户主配偶的]

save

b2,replace

[保存]

use b1,clear

keep if a5f==3|a5f==7

save

b3,replace

[留下其中是户主女儿或儿媳的并保存]

use

a3,clear

[打开与户主关系是户主子女的儿童数据库]

sort wave hhid

merge wave hhid using CHNS01b2, keep(hf lf)

ta _merge

drop if _merge==2

sort hhid line

wave

[处理两代户,将户主配偶女性库与儿童库合并]

by hhid line wave: egen x=count(id)

drop x

_merge

[计算每个年份家庭匹配的情况,x只取值1,表明两代户匹配成功]

save

b4,replace

[保存]

use

a4,clear

[打开与户主关系是户主孙子女的儿童数据库]

sort wave hhid

merge wave hhid using CHNS01b3, keep(a5f a8f schf a12f hf agemosf

c8f lf)

ta _merge

drop if

_merge==2

[处理三代户,将户主女儿或儿媳女性库与孙子女儿童库合并]

sort hhid line wave

by hhid line wave: egen x=count(id)

gen a=agemosf-agemos

drop if

a<216&x==3

[计算每个年份家庭匹配的情况,x不只取1,三代户匹配不完全成功。删除不合理的样本,标准是年龄差距和有三个可能母亲的那些家庭。]

gen xx=x[_n+1]

gen xxx=x[_n-1]

gen y=lf if x==1

replace y=lf[_n+1] if x==2&xx==1

replace y=lf[_n-1] if x==2&xxx==1

keep if x==1|(lf==y&x==2)

[对于有两个可能母亲的儿童,有相同编码的女性出现两次的情况。上面的做法是为了保证不删除这部分样本。]

drop a x xx xxx y _merge

save

b5,replace

[保存合并后的数据库]

[对男性数据的合并完全类似,不赘述。]

log close

exit,clear

我的方法是属于使用简单命令反复迂回地达到目的那一类的,所以非常希望有更简便的方法来替代。不过做实证时往往不是非常追求程序的漂亮,常常也就得过且过了。

stata强大的功能体现在它可以方便地回归微观数据。而回归也是微观实证中最重要的方法。下面就开始讲stata中和回归有关的常用命令。

基本回归方法有两种:线性设定下的最小二乘法(OLS)和两阶段最小二乘法(2SLS)。他们在实证分析中应用广泛,十分详细地掌握这两种方法是实证研究的基本要求。讲解的顺序是先依次介绍如何在stata中实现OLS和2SLS估计,然后再分析如何在实际问题中选择合理的方法。后一部分受Joshua Angrist教授的影响很大,因此,在后面引用他的思想时会详细注明。

假设你已经清楚地了解待估计方程的形式,那么回归命令的基本格式就十分简单明了:

reg (被解释变量)(解释变量1)(解释变量2)……

方程中的相应变量可以简单地放在reg的后面。执行上面的命令后,stata会出现两个表格,分别报告一些方差分析和回归的参数估计结果。我们最关心的是参数的大小和显著性,这在第二个表格中列出。表格的最左边一栏列出了解释变量,在它的右边是相应的系数估计值,然后依次是估计值的标准误,t比率,原假设为系数的真实值等于零时错误地拒绝该假设的概率——p值,以及该估计值的置信度为(1-5%)的置信区间。

我看到回归结果的第一眼是瞄着最关心的解释变量的符号、大小和显著性。看看解释变量影响的方向和大小是不是符合理论的预期,是不是合乎常识,以及这个估计值是不是显著。标记显著性的统计量是t统计量,在经典假设下,它服从t分布。t分布和标准正态分布形状很相似,但它的“尾巴”要比标准正态分布的“肥”一些,在样本量比较小的时候尤其明显,当样本量趋于无穷时,t分布的极限分布是标准正态分布。大家对标准正态分布的分布函数上一些关键点比较熟悉,比如,1.96是97.5%的关键点,1.64是95%的关键点,所以,我们

希望知道什么时候可以安全地使用标准正态分布。下表列出了一些小自由度下二者的差异(B eyer 1987 “CRC Standard Mathematical Tables, 28th ed.”;Goulden 1956 “Method s of Statistical Analysis, 2nd ed.”)。可以看出,自由度超过一百时,二者的差别就已经相当小了。所以,当样本量的数量级是100个或以上时,可以直接认为t比率服从标准正态分布,并以此做检验。

90% 95% 97.5% 99.5%

1 3.07768 6.31375 12.706

2 63.6567

2 1.88562 2.91999 4.30265 9.92484

3 1.6377

4 2.35336 3.1824

5 5.84091

4 1.53321 2.1318

5 2.77645 4.60409

5 1.47588 2.01505 2.57058 4.03214

10 1.37218 1.81246 2.22814 3.16927

30 1.31042 1.69726 2.04227 2.75000

100 1.29007 1.66023 1.98397 2.62589

1.28156 1.64487 1.95999

2.57588

读者读到这里可能会笑话我了,stata不是已经报告了t检验的p值和置信区间了吗?为什么不直接察看这些结果呢?原因在于实证文献往往只报告参数的估计值和标准误,需要读者自己将估计值和标准误相除,计算显著性。而且当你在写实证文章时,也应该报告参数的估计值和标准误。这比报告估计值和它的p值更规范。

伴随回归命令的一个重要命令是predict。回归结束后,使用它可以得到和回归相关的一些关键统计量。语法如下:

predict (新变量名),(统计量名)

这里的统计量名是一些选项。常用的选项有:xb(回归的拟合值。这是默认选项,即不加任何选项时,predict赋予新变量前一个回归的拟合值。);residuals(残差);leverage (杠杆值)。下面具一个例子来解释predict的用法。

有时样本中的一个特别的观察值会显著地改变回归结果。这样的观察值可以笼统地分为三类:outliers,leverage和influence。Outliers是针对残差而言的,指那些回归中残差很大的观察;leverage是针对解释变量而言的,是解释变量相对其平均值偏里很大的观察;inf luence是针对估计结果而言的。如果去掉这个观察会明显地改变估计值,那么这个观察就是一个influence。Influence可以看作outliers和leverage共同作用的结果。异常观察可能是由于样本的特性,也可能是因为录入错误。总之,我们希望找到它们。

回归后的predict命令可以发现这些异常观察(命令来自UCLA的“Regression with Stat a”第二章)。发现outliers,leverage和influence的命令如下:

predict rs, rstudent

predict l, leverage

predict csd, cooksd

predict df, dfits

这些统计量都有相应的关键值。当统计量(或其绝对值)超过关键值时就应该仔细检查相应的观察,确认是否属于录入错误。rstudent是用来发现outliers的统计量,其关键值是2,2.5和3。leverage 是用来发现leverage 的统计量,其关键值是(2k+2)/n,其中k解释变量的个数,n是样本量。Cooksd和DFITS是探测influence的统计量。它们都综合了残差和杠杆的信息,而且二者非常类似,只是单位不同,因而给出的结果也差不多。Cooksd的关键值是4/n。DFITS的关键值是2*sqrt(k/n)。

(续)

在使用最小二乘法估计时,两个通常被质疑的问题是数据是否存在多重共线性和异方差。多重共线性是指解释变量之间的相关性。通常我们假设解释变量之间是相关的,而且允许解释变量存在相关性,并控制可以观察的因素正是OLS的优点。如果把多重共线性看作一个需要解决的问题,那么需要把它解释为相关性“较大”。这样,变量之间没有相关性不好,相关性太大也不好,优劣的分割真是颇费琢磨。而且多重共线性并没有违反任何经典假定,所以,这个问题没有很好的定义。本质上讲,在样本给定时,多重共线性问题无法解决,或者说它是一个伪问题。

先看一下为什么解释变量之间的相关性大会有问题。在OLS回归的经典假设(除正态假设外)下,某个系数的OLS估计值的总体方差与扰动项的方差成正比,与解释变量的总方差(一般地,我们视解释变量为随机变量)成反比,是该变量对其它解释变量回归的拟合优度的增函数。这个拟合优度可以理解为该变量的总变动中可以由其他解释变量解释的部分。当这个值趋近于1时,OLS估计值的总体方差趋向于无穷大。总体方差大时,样本方差也大的概率就大,t检验就会不准确。尽管多重共线性没有违背任何经典假设,但是OLS方法有时无法准确估计一些参数。这个问题可以理解为数据提供的信息不足以精确地计算出某些系数。最根本的解决方法当然是搜集更大的样本。如果样本给定,也许我们应该修改提出的问题,使我们能够根据样本数据做出更精确的判断。去掉一个解释变量,或者合并一些解释变量可以减少多重共线性。不过要注意的是去掉相关的解释变量会使估计有偏。

实际操作时使用方差膨胀系数衡量解释变量的多重共线性。我们只需在回归之后使用vif 命令就可以得到方差膨胀系数。在命令行中敲入vif并回车,stata会报告一个包含所有解释变量的方差膨胀系数的表格,如果方差膨胀系数大于10,这个变量潜在地有多重共线性问题。

异方差是一个更值得关注的问题。首先简单地介绍一下异方差会带来哪些问题。第一、异方差不影响OLS估计的无偏性和一致性。第二、异方差使估计值方差的估计有偏,所以此时的t检验和置信区间无效。第三、F统计量不再服从F分布,LM统计量不再服从渐进卡方分布,相应的检验无效。第四、异方差使OLS不再是有效估计。总之,异方差影响推断是否有效,降低估计的效率,但对估计值的无偏性和一致性没有影响。

知道了异方差作用的原理,很自然地就有了对付它的办法。第一种方法是在不知道是否存在异方差时,通过调整相应的统计量纠正可能带来的偏差。OLS中实现对异方差稳健的标准误很简便。相应的命令是在原来的回归命令后面加上robust选项。如下:

reg (被解释变量)(解释变量1)(解释变量2)……,robust

White(1980)证明了这种方法得到的标准误是渐进可用(asymptotically valid)的。这种方法的优点是简单,而且需要的信息少,在各种情况下都通用。缺点是损失了一些效率。另一种方法是通过直接或间接的方法估计异方差的形式,并获得有效估计。典型的方法是W LS(加权最小二乘法)。WLS是GLS(一般最小二乘法)的一种,也可以说在异方差情形下的GLS就是WLS。在WLS下,我们设定扰动项的条件方差是某个解释变量子集的函数。之所以被称为加权最小二乘法,是因为这个估计最小化的是残差的加权平方和,而上述函数的倒数恰为其权重。

在stata中实现WLS的方法如下:

reg (被解释变量)(解释变量1)(解释变量2)…… [aweight=变量名]

其中,aweight后面的变量就是权重,是我们设定的函数。

一种经常的设定是假设扰动项的条件方差是所有解释变量的某个线性组合的指数函数。在s tata中也可以方便地实现:

首先做标准的OLS回归,并得到残差项;

reg (被解释变量)(解释变量1)(解释变量2)……

predict r, resid

生成新变量logusq,并用它对所有解释变量做回归,得到这个回归的拟合值,再对这个拟合值求指数函数;

gen logusq=ln(r^2)

reg logusq (解释变量1) (解释变量2)……

predict g, xb

gen h=exp(g)

最后以h作为权重做WLS回归;

reg (被解释变量)(解释变量1)(解释变量2)…… [aweight=h]

如果我们确切地知道扰动项的协方差矩阵的形式,那么GLS估计是最小方差线性无偏估计,是所有线性估计中最好的。显然它比OLS更有效率。虽然GLS有很多好处,但有一个致命弱点:就是一般而言我们不知道扰动项的协方差矩阵,因而无法保证结果的有效性。

到现在我们已经有了两种处理异方差的方法:一是使用对异方差稳健的标准误调整t统计量,并以此作推断;另一种是设定异方差的形式,使用可行的GLS得到有效估计。下面总结一下标准的OLS估计同上述两种方法的优劣,并结合检验异方差的方法,给出处理异方差的一般步骤。

stata回归分析完整步骤-吐血推荐12页

stata回归分析完整步骤——吐血推荐 ****下载连乘函数prod,方法为:findit dm71 sort stkcd date //对公司和日期排序 gen r1=1+r //r为实际公司的股票收益率 gen r2=1+r_yq //r_yq为公司的预期股票收益率 egen r3=prod(r1),by(stkcd date) //求每个公司事件日的累计复合收益率 egen r4=prod(r2),by(stkcd date) //求每个公司事件日的累计预期的复合收益率 gen r=r4-r3 capture clear (清空内存中的数据) capture log close (关闭所有打开的日志文件) set mem 128m (设置用于stata使用的内存容量) set more off (关闭more选项。如果打开该选项,那么结果分屏输出,即一次只输出一屏结果。你按空格键后再输出下一屏,直到全部输完。如果关闭则中间不停,一次全部输出。)set matsize 4000 (设置矩阵的最大阶数。我用的是不是太大了?) cd D: (进入数据所在的盘符和文件夹。和dos的命令行很相似。) log using (文件名).log,replace (打开日志文件,并更新。日志文件将记录下所有文件运行后给出的结果,如果你修改了文件内容,replace选项可以将其更新为最近运行的结果。) use (文件名),clear (打开数据文件。) (文件内容) log close (关闭日志文件。) exit,clear (退出并清空内存中的数据。) 假设你清楚地知道所需的变量,现在要做的是检查数据、生成必要的数据并形成数据库供将来使用。检查数据的重要命令包括codebook,su,ta,des和list。其中,codebook提供的信息最全面,缺点是不能使用if条件限制范围,所以,有时还要用别的帮帮忙。su空格加变量名报告相应变量的非缺失的观察个数,均值,标准差,最小值和最大值。ta空格后面加一个(或两个)变量名是报告某个变量(或两个变量二维)的取值(不含缺失值)的频数,比率和按大小排列的累积比率。des后面可以加任意个变量名,只要数据中有。它报告变量的存储的类型,显示的格式和标签。标签中一般记录这个变量的定义和单位。list报告变量的观察值,可以用if或in来限制范围。所有这些命令都可以后面不加任何变量名,报告的结果是正在使用的数据库中的所有变量的相应信息。说起来苍白无力,打开stata 亲自实验一下吧。

STATA 第一章 回归分析

在此处利用两个简单的回归分析案例让初学者学会使用STATA进行回归分析。STATA版本:11.0 案例1: 某实验得到如下数据 x 1 2 3 4 5 y 4 5.5 6.2 7.7 8.5 对x y 进行回归分析。 第一步:输入数据(原始方法) 1.在命令窗口输入input x y /有空格 2.回车 得到:

3.再输入: 1 4 2 5.5 3 6.2 4 7.7 5 8.5 end 4.输入list 得到 5.输入reg y x 得到回归结果 回归结果: =+ 3.02 1.12 y x T= (15.15) (12.32) R2=0.98 解释一下: SS是平方和,它所在列的三个数值分别为回归误差平方和(SSE)、残差平方和(SSR)及总体平方和(SST),即分别为Model、Residual和Total相对应的数值。df(degree of freedom)为自由度。 MS为SS与df的比值,与SS对应,SS是平方和,MS是均方,是指单位自由度的平方和。 coef.表明系数的,因为该因素t检验的P值是0.001,所以表明有很强的正效应,认为所检验的变量对模型是有显著影响的。_cons表示常数项 6.作图可以通过Graphics——>twoway—twoway graphs——>plots——>Create

案例2:加大一点难度 1. 首先将excel另存为CSV格式文件

2. 将csv文件导入STATA, File——>import——>选第一个 3.输入list 4.进行回归 reg inc emp inv pow 5.回归结果 =-+++ inc emp inv pow 395741.718.18 4.3530.22

第三章多元线性回归模型(stata)

一、邹式检验(突变点检验、稳定性检验) 1.突变点检验 1985—2002年中国家用汽车拥有量(t y ,万辆)与城镇居民家庭人均可支配收入(t x ,元),数据见表。 表 中国家用汽车拥有量(t y )与城镇居民家庭人均可支配收入(t x )数据 年份 t y (万辆) t x (元) 年份 t y (万辆) t x (元) 1985 1994 1986 1995 4283 1987 1996 1988 1997 1989 1998 1990 1999 5854 1991 2000 6280 1992 2001 1993 2002 下图是关于t y 和t x 的散点图:

从上图可以看出,1996年是一个突变点,当城镇居民家庭人均可支配收入突破元之后,城镇居民家庭购买家用汽车的能力大大提高。现在用邹突变点检验法检验1996年是不是一个突变点。 :两个字样本(1985—1995年,1996—2002年)相对应的模型回归参数相等H H :备择假设是两个子样本对应的回归参数不等。 1 在1985—2002年样本范围内做回归。

在回归结果中作如下步骤(邹氏检验): 1、 Chow 模型稳定性检验(lrtest) 用似然比作chow检验,chow检验的零假设:无结构变化,小概率发生结果变化* 估计前阶段模型 * 估计后阶段模型 * 整个区间上的估计结果保存为All * 用似然比检验检验结构没有发生变化的约束 得到结果如下;

(如何解释) 2.稳定性检验(邹氏稳定性检验) 以表为例,在用1985—1999年数据建立的模型基础上,检验当把2000—2002年数据加入样本后,模型的回归参数时候出现显著性变化。 * 用F-test作chow间断点检验检验模型稳定性 * chow检验的零假设:无结构变化,小概率发生结果变化 * 估计前阶段模型 * 估计后阶段模型 * 整个区间上的估计结果保存为All

STATA回归分析讲解学习

STATA一章回第归析分. 在此处利用两个简单的回归分析案例让初学者学会使用STATA进行回归分析。STATA版本:11.0 案例1: 某实验得到如下数据 x 1 2 3 4 5 5.5 6.2 7.7 y 4 8.5

对x y 进行回归分析。 第一步:输入数据(原始方法) 1.在命令窗口输入input x y /有空格 回车2. 得到: 3.再输入:1 4 2 5.5 3 6.2 4 7.7 5 8.5 end 4.输入list 得到 5.输入reg y x 得到回归结果 回归结果: x1.12?3.02?y 2=0.98 T= (15.15) (12.32) R 解释一下: SS是平方和,它所在列的三个数值分别为回归误差平方和(SSE)、残差平方和(SSR)及总体平方和(SST),即分别为Model、Residual和Total相对应的数值。 df(degree of freedom)为自由度。 MS为SS与df的比值,与SS对应,SS是平方和,MS是均方,是指单位自由度的平方和。

coef.表明系数的,因为该因素t检验的P值是0.001,所以表明有很强的正效应,认为所检验的变量对模型是有显著影响的。_cons表示常数项 6.作图可以通过Graphics——>twoway—twoway graphs——>plots——>Create 案例2:加大一点难度 1. 格式文件CSV另存为excel首先将. 2. 将csv文件导入STATA, 选第一个>——>import——File

3.输入list 4.进行回归 reg inc emp inv pow 5.回归结果 pow30.22?inv4.35?emp18.18?395741.7??inc

第二章 一元线性回归模型(Stata)

1. 中国居民人均消费模型 从总体上考察中国居民收入与消费支出的关系。表2.1给出了1990年不变价格测算的中国人均国内生产总值(GDPP )与以居民消费价格指数(1990年为100)所见的人均居民消费支出(CONSP )两组数据。 表2.1 中国居民人均消费支出与人均GDP (单位:元/人) 年份 CONSP GDPP 年份 CONSP GDPP 1978 395.8000 675.1000 1990 797.1000 1602.300 1979 437.0000 716.9000 1991 861.4000 1727.200 1980 464.1000 763.7000 1992 966.6000 1949.800 1981 501.9000 792.4000 1993 1048.600 2187.900 1982 533.5000 851.1000 1994 1108.700 2436.100 1983 572.8000 931.4000 1995 1213.100 2663.700 1984 635.6000 1059.200 1996 1322.800 2889.100 1985 716.0000 1185.200 1997 1380.900 3111.900 1986 746.5000 1269.600 1998 1460.600 3323.100 1987 788.3000 1393.600 1999 1564.400 3529.300 1988 836.4000 1527.000 2000 1690.800 3789.700 1989 779.7000 1565.900 1) 建立模型,并分析结果。 2)输出结果为: 对应的模型表达式为: 201.1070.3862CONSP GDPP =+ (13.51) (53.47) 2 0.9927,2859.23,0.55R F DW === 从回归估计的结果可以看出,拟合度较好,截距项和斜率项系数均通过了t 检验。

第十七章多因素回归分析的Stata实现

第十七章多因素回归分析的Stata实现 本章使用的Stata命令: 多因素回归regress depvar [indepvars] 逐步回归stepwise [, options ] : command Logistic回归logistic depvar indepvars [weight] 生存时间数据设定stset timevar [weight] [, failure(failvar[==numlist])] Cox回归stcox [varlist] 例17-4 某研究者为了研究某种避孕药对人体血糖的影响,分别在正在使用这种避孕药的人群、6个月前曾经使用过这种避孕药的人群、从未使用过避孕药的人群中各随机抽取6人。考虑到血糖可能与年龄有关,所以该研究者不仅测定了这18位对象的血糖,而且也记录了这18位对象的年龄,具体资料见表17-4。请根据研究问题作统计分析。 表17-4 三种避孕药使用情况下的年龄(,岁)与血糖水 平(,mg%) 现服药者曾服药者从未服药者 201202412628135 211222613032137 231242713234138 231262913135137 241252913435139 241273013637144

本研究的问题是比较三种用药情况下的血糖平均水平是否不同,因此首先考虑以下总体均数的情况。 解:Stata数据如下: x y g1g2 2012001 2112201 2312401 2312601 2412501 2412701 2412610 2613010 2713210 2913110 2913410 3013610 2813500 3213700 3413800 3513700 3513900 3714400 Stata命令如下: reg y x g1 g2 结果: Source | SS df MS Number

stata回归分析完整步骤-吐血推荐-推荐下载

stata 回归分析完整步骤——吐血推荐 ****下载连乘函数prod,方法为:findit dm71sort stkcd date //对公司和日期排序gen r1=1+r //r 为实际公司的股票收益率gen r2=1+r_yq //r_yq 为公司的预期股票收益率 egen r3=prod(r1),by(stkcd date) //求每个公司事件日的累计复合收益率egen r4=prod(r2),by(stkcd date) //求每个公司事件日的累计预期的复合收益率 gen r=r4-r3 capture clear (清空内存中的数据) capture log close (关闭所有打开的日志文件)set mem 128m (设置用于stata 使用的内存容量) set more off (关闭more 选项。如果打开该选项,那么结果分屏输出,即一次只输出一屏结果。你按空格键后再输出下一屏,直到全部输完。如果关闭则中间不停,一次全部输出。) set matsize 4000 (设置矩阵的最大阶数。我用的是不是太大了?)cd D: (进入数据所在的盘符和文件夹。和dos 的命令行很相似。) log using (文件名).log,replace (打开日志文件,并更新。日志文件将记录下所有文件运行后给出的结果,如果你修改了文件内容,replace 选项可以将其更新为最近运行的结果。) use (文件名),clear (打开数据文件。)(文件内容) log close (关闭日志文件。) exit,clear (退出并清空内存中的数据。) 假设你清楚地知道所需的变量,现在要做的是检查数据、生成必要的数据并形成数据库供将来使用。检查数据的重要命令包括codebook ,su ,ta ,des 和list 。其中,codebook 提供的信息最全面,缺点是不能使用if 条件限制范围,所以,有时还要用别的帮帮忙。su 空格加变量名报告相应变量的非缺失的观察个数,均值,标准差,最小值和最大值。ta 空格后面加一个(或两个)变量名是报告某个变量(或两个变量二维)的取值(不含缺失值)的频数,比率和按大小排列的累积比率。des 后面可以加任意个变量名,只要数据中有。它报告变量的存储的类型,显示的格式和标签。标签中一般记录这个变量的定义和单位 、管路敷设技术通过管线不仅可以解决吊顶层配置不规范高中资料试卷问题,而且可保障各类管路习题到位。在管路敷设过程中,要加强看护关于管路高中资料试卷连接管口处理高中资料试卷弯扁度固定盒位置保护层防腐跨接地线弯曲半径标高等,要求技术交底。管线敷设技术包含线槽、管架等多项方式,为解决高中语文电气课件中管壁薄、接口不严等问题,合理利用管线敷设技术。线缆敷设原则:在分线盒处,当不同电压回路交叉时,应采用金属隔板进行隔开处理;同一线槽内,强电回路须同时切断习题电源,线缆敷设完毕,要进行检查和检测处理。、电气课件中调试对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行 高中资料试卷调整试验;通电检查所有设备高中资料试卷相互作用与相互关系,根据生产工艺高中资料试卷要求,对电气设备进行空载与带负荷下高中资料试卷调控试验;对设备进行调整使其在正常工况下与过度工作下都可以正常工作;对于继电保护进行整核对定值,审核与校对图纸,编写复杂设备与装置高中资料试卷调试方案,编写重要设备高中资料试卷试验方案以及系统启动方案;对整套启动过程中高中资料试卷电气设备进行调试工作并且进行过关运行高中资料试卷技术指导。对于调试过程中高中资料试卷技术问题,作为调试人员,需要在事前掌握图纸资料、设备制造厂家出具高中资料试卷试验报告与相关技术资料,并且了解现场设备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。 、电气设备调试高中资料试卷技术电力保护装置调试技术,电力保护高中资料试卷配置技术是指机组在进行继电保护高中资料试卷总体配置时,需要在最大限度内来确保机组高中资料试卷安全,并且尽可能地缩小故障高中资料试卷破坏范围,或者对某些异常高中资料试卷工况进行自动处理,尤其要避免错误高中资料试卷保护装置动作,并且拒绝动作,来避免不必要高中资料试卷突然停机。因此,电力高中资料试卷保护装置调试技术,要求电力保护装置做到准确灵活。对于差动保护装置高中资料试卷调试技术是指发电机一变压器组在发生内部故障时,需要进行外部电源高中资料试卷切除从而采用高中资料试卷主要保护装置。

stata多元回归分析

stata多元回归分析 Stata多元回归分析主要包括基本回归分析、对函数形式的进一步讨论(对数、二次项、交互项)、含有虚拟变量的模型、异方差四个方面。 高斯—马尔可夫定理在给定经典线性回归的假定下,最小二乘估计量是具有最小方差的线性无偏估计量。 MLR.1线性模型 MLR.2样本是随机抽样得出的 MLR.3不存在完全共线性 MLR.4条件均值为零,给定自变量的任何值误差μ的期望为零,即E(u/X1,X2...Xk)=0 MLR.5同方差,给定任意解释变量值,误差μ的方差相同,即Var(u/X1,X2...Xk)=σ2 1.基本回归分析 以计量经济学导论(第五版)第四章第2小题为例,数据为LAWSCH85.DTA,刚从法学院毕业的学生的起薪中位数由下式决定: log(salary)=b0+b1LSAT+b2GPA+b3log(libvol)+b4log(cost)+b5rank+ u 其中,LSAT是整个待毕业年级LSAT成绩的中位数,GPA是该年级大学GPA的中位数,libvol是法学院图书馆藏书量,cost是法学院每年的费用,rank是法学院的排名。 (i)检验原假设H0:rank对法学院毕业生起薪中位数没有影响。 (ii)检验LSAT和GPA是否联合显著,H0:βLSAT=βGPA=0 估计方程的命令为: reg lsalary LSAT GPA llibvol lcost rank 估计结果为: log(salary)=58.34+0.004LSAT+0.24GPA+0.095lg(libvol) +0.038log(cost)-0.0033rank n=136,R2=0.842.

相关主题