2008年4月13日星期日

我常用到的stata命令之二

(续)
第一步是整理原始数据。没有经过整理得原始数据,有错漏和不统一的地方。比如,一些变量的缺失观察值的表示方法,有时会用点,有时会用-9,-99等数字。未加调整就回归,结果自然荒谬。还有在不同的数据中,相同的变量的变量名不同,给合并数据带来麻烦。个人意见:根据需要,从原始数据中提取所需信息,再重新生成新的数据库,后续的分析只使用这个新库。如果需要增添新的信息,也是修改这个新库,不宜直接调用原始数据。这部分工作不难,但是非常基础。如果在这里你不够小心,后面的事情往往会白做。

现在检查数据。常用的命令包括codebook,su,ta,des和list。其中codebook提供的信息最全面,缺点是不能使用if条件限制范围,而且各种信息同时报告,在制作表格时不方便,所以还要用别的命令帮帮忙。su(summrarize)的语法是空格加变量名,它报告相应变量的非缺失的观察个数,均值,标准差,最小值和最大值。ta(tabulate)的语法是空格后面加一个(或两个)变量名,它报告某个变量(两个变量时即为二维)的取值(不含缺失值)的频数,比率和按大小排列的累积比率。des(describe)的后面也可以加任意个变量名,只要在数据中有。它报告变量的存储的类型,显示的格式和标签。(一般地,标签记录该变量的定义和单位)。List的后面也是接变量名,它报告该变量的观察值,我们可以用if或in来限制观察值的范围。所有这些命令都可以后面不加任何变量名,报告的结果是正在使用的数据库中的所有变量的相应信息。说起来苍白无力,不如打开stata亲自实验一下吧。

一句题外话。除了codebook之外,上述统计类的命令都属于r族命令(也称一般命令)。执行后都可以使用return list报告储存在r()中的统计结果。最典型的r族命令当属summarize。它会把样本量、均值、标准差、方差、最小值、最大值、总和等统计信息储存起来。你在执行su之后,只需敲入return list就可以得到所有这些信息。除了用于统计的命令之外,还有用于估计的命令,比如,regress。这些估计命令(又称e族命令)也存储了很多相关信息。和前面的统计命令类似,我们可以用ereturn list命令看到相应的信息。在复杂一些的应用中,比如对回归分解,计算一些程序中无法直接计算的统计量时,这些功能很有用。

用codebook可以看变量的值域和单位。如果有-9,-99这样的取值,怀疑是缺失。核对一下问卷中对缺失值的记录方法,确定后,改为用点记录。命令是replace (变量名)=. if (变量名)==-9。缺失值占总样本的比例太多不好,一是样本小,结果会不显著;二是可能有选择性偏差,缺失的那部分人的特征和总体相差很大。这是选用变量的一个依据。

统一命名。或者统一标签;或者统一变量的命名规则。更改变量名的命令是

ren(原变量名)(新变量名)

定义标签的命令是

label var(变量名)”(标签内容)”

整齐划一的变量名有助于记忆,简明的标签有助于分析数据。
(待续)

没有评论: