. reg mpg price weight Source SS df MS Number of obs = 74 F( 2, 71) = 66.85 Model 1595.93249 2 797.966246 Prob > F = 0.0000 Residual 847.526967 71 11.9369995 R-squared = 0.6531 Adj R-squared = 0.6434 Total 2443.45946 73 33.4720474 Root MSE = 3.455 mpg Coef. Std. Err. t P>|t| [95% Conf. Interval] price -.0000935 .0001627 -0.57 0.567 -.000418 .0002309 weight -.0058175 .0006175 -9.42 0.000 -.0070489 -.0045862 _cons 39.43966 1.621563 24.32 0.000 36.20635 42.67296
Weight的系数是-0.0058175,表示如果车重增加1000磅,每加仑汽车将少跑5.8英里。一个更复杂一些的使用如下:
. by foreign: regress mpg price weight if weight < 4000, vce(robust)
有时,我们不想看到输出结果,可以使用前缀quietly,比如
. quietly regress mpg price weight
1.2 缩写、关系式和错误信息
Stata命令可以缩写,比如summarize可以缩写为su,regress可以缩写为reg,在help文件中,Stata命令下划线部分即该命令可以缩写的最短形式。加外,任意符*可以表示任意字母,比如sum t*表示对所有首字母为t的变量进行简单统计。
数学运算符有加(+)、减(-)、乘(*)、除(/)、指数(^)、负(前缀-);关系运算符有大于(>)、小于(<)、等(==)、不等于(!=或~=)。
逻辑运算符有与(&)、或(|)、非(!或~)。
Stata运行出错时,会提供错误代码,比如r(111),用户可以交互式的通过search rc 111命令,获得错误代码的意思或直接在输出窗口中点击r(111)得到相应解释。
1.3 do文件
do文件是将Stata命令列表形式生成的一个文本文件,运行该文件时,Stata即会按照文件命令的排列顺序逐条执行。do文件是Stata软件的一个重要特色,在数据处理和实证分析中特别有用。do的书写可以使用任何文本编辑器进行,也可以使用Stata自带的编辑器书写,可以用命令doedit直接调出Stata自带文本编辑器进行编辑。比如我们写一个简单的do文件,将命令sysuse auto.dta, clear、
summarize mpg, detail 放在同一个do文件中,起名为example.do。则我可以使用命令do example.do 来执行该文件。
6
当do文件比较大,命令比较多时,加入解释和说明是必要的。Stata允许在do文件中加入说明。有三种方式,
第1种,直接以*开头进行的一行的说明。 第2种在命令后面直接加// 第3种用/* */或///加注 比如下面的example.do文件
*This is an example of do files with comments log using auto, replace // generate a log file sysuse auto, /* */ clear
/*Summarize variable mpg */ sum mpg /// ,detail
log close //close the log file
当然,也可以通过改变结尾分隔符的方式来做,比如 *change delimiter from cr to semicolomn and back to cr #delimit ;
*more than one command per line and command spans more than one line; log using auto, replace; sysuse auto, clear; summarize mpg; log close; #delimit cr
为了程序可读性,我们通常用///而不使用改变分隔符的形式。 do文件的运行非常简单,直接在命令窗口输入do filename.do即可。 1.4 标量和矩阵
一个标量可以用来储存数字或字符,比如
7
. scalar a=2*3. scalar b=\. display b a2 times 3 =6
矩阵的使用有两种方式,一种是直接在命令窗口利用matrix前缀,另一种使用mata命令。
. matrix define A=(1,2,3\\4,5,6). matrix list AA[2,3] c1 c2 c3r1 1 2 3r2 4 5 6
. mata mata (type end to exit) : A=(1,2,3\\3,4,5): B=(2,3\\5,6): A'*B 1 2 1 17 21 2 24 30 3 31 39 : end
1.5 使用Stata命令的结果
Stata命令的结果有两类,一类是r类、一类是e类,Stata中分析数据但不估计参数的命令称为r类命令,这类命令的结果会保存在r()中,通过return list命令可以列出该命令产生的所有结果,比如,
8
. summarize mpg Variable Obs Mean Std. Dev. Min Max mpg 74 21.2973 5.785503 12 41. return listscalars: r(N) = 74 r(sum_w) = 74 r(mean) = 21.2972972972973 r(Var) = 33.47204738985561 r(sd) = 5.785503209735141 r(min) = 12 r(max) = 41 r(sum) = 1576
因而,可以利用这些信息计算一些有用的参数,比如我们计算mpg的极差,
. scalar range=r(max)-r(min). di range29
那些估计参数的命令称为e类命令,其结果会保存在e()中,利用ereturn list可以列出所有的结果。比如回归命令,
9
r(max) = 41 r(sum) = 1576. scalar range=r(max)-r(min). di range29. reg mpg price weight Source SS df MS Number of obs = 74 F( 2, 71) = 66.85 Model 1595.93249 2 797.966246 Prob > F = 0.0000 Residual 847.526967 71 11.9369995 R-squared = 0.6531 Adj R-squared = 0.6434 Total 2443.45946 73 33.4720474 Root MSE = 3.455 mpg Coef. Std. Err. t P>|t| [95% Conf. Interval] price -.0000935 .0001627 -0.57 0.567 -.000418 .0002309 weight -.0058175 .0006175 -9.42 0.000 -.0070489 -.0045862 _cons 39.43966 1.621563 24.32 0.000 36.20635 42.67296 . ereturn listscalars: e(N) = 74 e(df_m) = 2 e(df_r) = 71 e(F) = 66.84814256414501 e(r2) = .6531446579233134 e(rmse) = 3.454996314099513 e(mss) = 1595.932492798133 e(rss) = 847.5269666613265 e(r2_a) = .6433740849070687 e(ll) = -195.2169813478502 e(ll_0) = -234.3943376482347 e(rank) = 3macros: e(cmdline) : \ e(title) : \ e(marginsok) : \ e(vce) : \ e(depvar) : \ e(cmd) : \ e(properties) : \ e(predict) : \ e(model) : \ e(estat_cmd) : \matrices: e(b) : 1 x 3 e(V) : 3 x 3functions: e(sample) .
1.6 宏
宏(macro)是利用一个字符串代表另一个字符串。比如,我们可以利用宏xlist来代替”price weight”。这种替代可以使程序更短,增加易读性,并且很容易修改。宏分为全局宏和局部宏。 全局宏用global进行定义,并用$进行引用,比如,
10