作者mushiue (mushiue)
看板NCHU-AE98
标题[转录]我常用到的stata命令(二)
时间Thu Nov 18 20:49:15 2010
我常用到的stata命令:
(续)
实证工作中往往接触的是原始资料。这些资料没有经过整理,有一些错漏和不统一的地方
。比如,对某个变数的缺失观察值,有时会用点,有时会用-9,-99等来表示。回归时如
果使用这些观察,往往得出非常错误的结果。还有,在不同的资料档案中,相同变数有时
使用的变数名不同,会给合并资料造成麻烦。因此,拿到原始资料後,往往需要根据需要
重新生成新的资料库,并且只使用这个新库处理资料。这部分工作不难,但是非常基础。
因为如果在这里你不够小心,後面的事情往往会白做。
假设你清楚地知道所需的变数,现在要做的是检查资料、生成必要的资料并形成资料库供
将来使用。检查资料的重要命令包括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 (原变数名)空格(新变数名)。定义标签的命令是
label var (变数名)空格”(标签内容)”。整齐划一的变数名有助於记忆,简明的标
签有助於明确变数的单位等资讯。
如果你需要使用通过原始变数派生出的新变数,那麽就需要了解gen,egen和replace这三
个命令。gen和replace常常在一起使用。它们的基本语法是gen (或replace)空格(变数
名)=(运算式)。二者的不同之处在于gen是生成新变数,replace是重新定义旧变数。
虚拟变数是我们常常需要用到的一类派生变数。如果你需要生成的虚拟变数个数不多,可
以有两种方法生成。一种是简明方法:gen空格(变数名)=((限制条件))[这外面的
小括弧是命令需要的,里面的小括弧不是命令需要的,只是说明“限制条件”并非命令]
。如果某个观察满足限制条件,那麽它的这个虚拟变数取值为1,否则为0。另一种要麻烦
一点。就是
gen (变数名)=1 if (取值为一限制条件)
replace(相同的变数名)=0 if (取值为零的限制条件)
两个方法貌似一样,但有一个小小的区别。如果限制条件中使用的变数都没有任何缺失值
,那麽两种方法的结果一样。如果有缺失值,第一种方法会把是缺失值的观察的虚拟变数
都定义为0。而第二种方法可以将虚拟变数的取值分为三种,一是等於1,二是等於0,三
是等於缺失值。这样就避免了把本来资讯不明的观察错误地纳入到回归中去。下次再讲如
何方便地生成成百上千个虚拟变数。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.120.95.44