Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Untitled Prezi

No description
by

xiang yubing

on 18 June 2015

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Untitled Prezi

stata软件应用基础
工作路径设置 cd c:\ado\personal


-findit-命令:模糊查询
findit regress
findit test
findit shellout
-findit-命令:精确查询
findit outreg2
-ssc-命令:安装(卸载)来源于 ssc: Statistical Software Components 的命令
help ssc // http://www.repec.org/
ssc whatsnew
下载安装 ssc 命令
ssc install outreg2, replace

查询 安装
寻求帮助_ 主要命令
-help-, -search-, -hsearch-, -findit-
例子
help regress
search panel data, net
hsearch "fixed effect"
findit panel balance

课程使用的数据介绍
涉及命令 -use- -sysuse- -webuse- -clear-
系统自带数据
打开一个数据
-clear- 命令的使用

例子
打开一个数据
sysuse auto,clear
webuse auto, clear
webuse lifeexp,clear
use http://www.stata-press.com/data/r10/lifeexp,clear
use "http://www.stata-press.com/data/r10/lifeexp",clear

功能:从内存中清除数据、清除值的标签、清除存储结果、矩阵等
常用,清除已经加载的数据.注意:clear 并不影响硬盘上存储的数据
sysuse auto, clear 或者
clear
sysuse auto

清除值标签
label list
clear
清除存储结果
clear results
清除矩阵
clear matrix

clear 命令的使用
涉及命令: -shellout-, -infile-, -outfile-, -insheet-, -infix-, -xmluse-
 手动输入
从 txt, excel 表格中粘贴
使用stata命令:-infile-, -insheet-, -infix-, -xmluse-
借助软件

输入数据
例子
clear
input x y z
1 2 3
2 3 4
3 4 5
end
save example.dta

手动输入
-infile-: free format vs. 带dictionary
help infile
infile price mpg rep78 using myout.raw
*包含文字变量的情形
infile price int (mpg rep78) str10 (foreign) using myout,clear
例1free format,空格分隔
infile price mpg rep78 using myout.raw
例2,free format,逗号分隔
infile str10 (v1) int (v2 v3 v4) str10 (v5) using "逗号分隔.txt", clear
使用stata命令:-infile-, -insheet-, -infix-, -xmluse-
当变量名称缺失时
例子:insheet using auto_noname.txt, clear
可在输入数据时指定变量名称
例子: insheet price weight length using auto_noname.txt, clear
当要读取其他形式分隔的数据时
例子:insheet using "逗号分隔.txt", clear
例子:insheet using "逗号分隔.txt", clear delimiter(",")
(需要通过 delimiter 选项指定“分隔符号”)

-insheet-:主要读取以 -tab- 分隔的数据
-xmluse-: 调入Excel格式的数据,不常用
-注意:需要把 **.xls 另存为 **.xml (另存类型选择"XML表格")

借助软件
-Stat/Transfer- 软件:迅速地在不同软件数据格式之间转换,可重复性


save
save,replace

建议:1. 谨慎使用save,replace.
2. 只在初次导入数据时保存,不再更改原数据,所有的处理都在 dofile中进行,不得不产生过程数据的时候另外命名。即只需保存最原始的数据和do-file即可。

数据存储
涉及命令:-outfile-, -outsheet-, -xmlsave-, -dataout-, -outdat-

使用stata命令导出
-outfile-: 导出为 文本格式
-outsheet-:导出为 -Tab- 分隔的文本文件,delimiter("char")
-xmlsave-: 导出为 XML 格式
-dataout-: 导出为 Word,Excel,Tex (外部命令)
-outdat- : 导出为 spss, rats, limdep 格式 (外部命令)
outfile using auto,replace

数据输出
outfile using auto,replace 
导出部分变量
outfile make price foreign using auto, wide replace
 
-outsheet-:导出为 -Tab- 分隔的.out文本文件,delimiter("char")
outsheet price wei len using auto, replace
- 配合delimiter,导出其他存储方式
outsheet price wei len using auto,delimiter(" ") replace
 
-xmlsave-: 导出为 XML 格式
xmlsave auto, doctype(excel) replace
 
-dataout-: 导出为 Word,Excel,Tex (外部命令),无法识别逗号分隔
dataout, save(auto) excel replace
dataout, save(auto) word replace

例:数据导出
基本命令语句
数据运算符在命令中的运用
_n与_N
几个必须懂的常用命令

stata 基本与常用命令语句

stata命令的通用格式: command varlist [if] [in] [ , options]
[if] [in] 用于限制样本范围
[options] "可选项",对主命令功能的扩充或限制

-特别提醒:
(1) "[ ]" 为可选项,可以不填,但不在[]中的内容都必须填写
(2) 整个命令"裸露"的逗号只有一个,此前为命令主体,此后为选项对于选项中的逗号,必须采用"()"进行包裹
(3) ()与""必须成对出现
(4) 逗号和引号必须使用英文的,与""
(5) stata支持多数命令和选项的缩写,帮助文件中带下滑线的部分表示可以缩写的程度

基本命令语句
三类:关系运算;逻辑运算;算术运算
关系运算符 ==; >; <; >=; <=; !=; ~=
=与==的区别:=用来赋值

逻辑运算符: &;|

算术运算符:+; -; *; /; ^

数据运算符在命令中的运用
定义:
_n "样本序号变量",是一个变量,内容为 1,2,3,...,n
_N "样本数指标", 是一个单值,内容为 样本数
 
注意:
_n 是一个永远存在,但却不能显示出来的特殊变量
_n 的取值会随样本排序的变化而变化
_N 是一个永远存在,能显示出来的数字
_N 的取值随样本数变化而变化,不随样本排序变化

_n与_N
1.差分
sort date
gen d_open = open[_n] - open[_n-1]
2.分组
3.去重复值
bysort idcode: gen dup1=_n
*对比:
bysort idcode:gen dup2=_N
sum dup1 dup2
list idcode if _n>1 //只能显示一个duplicates
bysort idcode: drop if _n>1 //去除顺序在第二个的duplicates
 
bysort idcode: drop if _N>1 //去除存在duplicates的样本

_n 和 _N 的应用
describe, compress, label, summarize, list, display
sort, gsort, bysort, count,tab

几个必须懂的常用命令
变量
(1) 由“英文字母”、“数字”或 “_” 组成,至多不超过 32 个;
(2) 首字母必须为 “字母” 或 “_” ;
特别注意:
许多stata的内部变量都是以 _ 开头的,如,_n, _N, _cons, _b 等等。
建议不要使用 “_” 作为变量的第一个字母
(3) 英文字母的大写和小写具有不同的含义;

示例:
abc_1 a1 _a2 _Gdp_ 都是合理的变量名
5abc 2a 则不是

命名规则
变量的存储类型:整数型、小数、字符型
整数的存储类型
byte 字节型 (-100, +100)
int 一般整数型 (-32000, +32000)
long 长整数型 (-2.14*10^10, +2.14*10^10),即,正负21亿

小数的存储类型
float 浮点型 8 位有效数字
double 双精度 16 位有效数字

字符型变量
str# 如 str20 表示该变量最多包含 20 个字符
每个汉字占两个字符,无法被 sum 出来

存储类型及更改,-format-,-recast-
显示存储格式 describe
例子解释
str18 文字型变量,每个观察值占据18个空格
%-18s 靠左列印于屏幕上;若 %18s,则靠右列印;
%~18s, 则居中列印
%8.0g 在 `8.0' 的原则下,以尽量多的有效位数列出
%6.2f 总共占6个空格,小数位占两个空格
修改存储格式:-format-,-recast-
format make %15s
recast int gear_ratio, force
 
字符型和数字型的有条件互换:-destring-,-tostring-
tostring 从数字型转为字符型
destring 从字符型转为数字型

排序 -order- -aorder- -move-
删除 -drop-
删除一个变量
drop price2
删除一组连续存储的变量
drop wlratio-bad2
删除指定区间的观察值
drop in 1/3
删除满足特定条件的观察值
drop if (rep78==.)
删除内存中的所有变量
drop _all

变量的排序与删除
单个变量
rename make maker 将变量名make改为maker

多个变量改名 -renvars-(外部命令)
renvars price weight length / p wei len
renvars price weight length, postfix(_new) (批量增加后缀)

修改内容 -recode-,-replace-
recode y (.=1) 只能对数字型操作
replace z = 1 if z == .

改名 -rename-, -renvars-
可以给整个样本加标签,也可以给变量加标签(主要用途)
a 样本标签
label data "汽车价格数据"
b 变量的标签
label variable price “汽车价格”
c 类别变量的文字标签(数字-文字对应表) -label define-
label define 标签名
label values 变量名 标签名 (将变量值和标签联系起来)
例子:
tab rep78
label define repair 1 "好" 2 "较好" 3 "中" 4 "较差" 5 "差"
label values rep78 repair
d 标签的管理 -labelbook- -label dir- -label list-

标签: -label- 附加说明 -notes-
可以给整份样本加说明,也可以单独为变量加说明
为整份数据加说明
note:还需确认-rep78-变量中缺漏值的原因

为单个变量加说明
note weight: 该变量与length高度共线性!

notes 显示已添加的说明

其他:lookfor
功能:大型数据中的搜索变量
可搜索关键词或标签
lookfor head

克隆已有变量 -clonevar-
把已有变量的标签,数字-文字对应表等所有内容都复制过去
clonevar foreign_c = foreign
等价方式:但没有变量标签:
gen foreign_g = foreign
 
拆分变量 -separate-
separate mpg, by(foreign)
 
-gen- 生成变量
generate price2 = price^2
与bysort合用
bysort occupation:gen x=_n

-egen- 生成变量的扩展命令
egen 与 gen基本差异
gen sum_close0 = sum(close) // 累加
egen sum_close1 = sum(close) // 总体加总
对于缺漏值的处理也有差异
gen 有缺失值的情况下不进行计算
egen 忽略缺失值进行计算
 
与bysort合用
bysort occupation:egen x=mean(wage)

生成新变量——普通
1.基本方式
-使用-generate-和-replace-产生虚拟变量,生产单变量虚拟变量
例子:sysuse nlsw88.dta, clear
gen dum_race2 = 0
replace dum_race2=1 if race==2 
2、基于类别变量生成虚拟变量: -tab-命令
例子: sysuse nlsw88.dta, clear
tab race
tab race, gen(dum_r)
3、基于类别变量生成虚拟变量: -xi-命令
xi i.race 自动定义虚拟变量的名称,并附加标签,在做回归时这种方式最好
-注意:再次使用-xi-命令时,此前生成的虚拟变量会被覆盖
-解决方法-1-:使用 prefix(str) 选项
-解决方法-2-:事先修改变量名称: -renvars-

创建变量——虚拟变量
cond() 函数
基本语法:cond(s,a,b) | cond(s,a,b,c)
取值:
a if 表达式 s 为真;
b if 表达式 s 为假;
c if 表达式 s 为缺漏值

示例:对于年限、小时等数值比较多的比较适用
sysuse nlsw88, clear
gen dum1 = cond(hours>40, 1, 0, .)

inlist() 函数
基本语法:inlist(x, a,b,c,...)
取值:
1 if x = a,b,c,...中的任何一个
0 otherwise
示例 1:
gen dum_occu = inlist(occu, 1,2,7,12)
等价于
gen dum_occu1 = (occ==1|occ==2|occ==7|occ==12)

inrange() 函数
基本语法: inrange(x, a,b)
取值:
1 if a<= x <= b;
0 otherwise

利用条件函数产生虚拟变量
等分样本 -group()-
gen g_wage = group(5)
指定分界点的转换方式 -recode-
recode age (min/39 = 1) (39/42 = 2) (42/max = 3), gen(g_age)

创建变量——类别变量
例子:sysuse nlsw88, clear
gen ttlexp_x_marry = ttl_exp*married

创建变量——交叉项 用#、*都可以
滞后项、前推项、差分
sysuse sp500.dta, clear
tsset date (声明数据为时间序列)
gen open_lag = L.open 滞后一期
gen open_lag2 = L2.open 滞后两期
gen open_forward = F.open 前导一期
gen open_diff = D.open 一阶差分
gen open_diff2 = D2.open 二阶差分

其他常见变量生成示例
创建变量
变量命名、存储、排序、删除、改名
样本
sysuse auto,clear
sort mpg 按照变量mpg从小到大的顺序排序
list make mpg in 1/5 列出前5行的make和mpg
sort make mpg
按照变量make和mpg从小到大的顺序排序,先make再mpg, make不是数字,即按照字母顺序
gsort –mpg 把mpg按照从大到小的顺序排列
bysort turn : sum mpg 按照turn的不同值,分别进行sum
注意:sort并不能产生唯一的排序

样本排序 sort gsort bysort
永久删除
drop if _n == 2
drop if foreign == 1
一定要跟if合用
换种思维:保留不删除的值——同样适用于变量
sysuse auto,clear
keep if foreign == 0 //保留foreign等于0的数据

在某个操作过程中暂时删除
sysuse auto,clear
sum if trunk == 16
preserve
drop if trunk != 16 //丢掉trunk不等于16的数据
sum
restore
browse


样本删除-drop-,-keep-, -preserve-,-restore-
横向合并 -merge-
一对一合并 [ 1:1 ]
sysuse census,clear
preserve
keep state region pop poplt5 pop5_17 pop18p pop65p popurban
save census_u,replace
restore
drop pop poplt5 pop5_17 pop18p pop65p popurban
save census_m,replace
合并方法:
use census_m.dta, clear
merge 1:1 state using census_u

多对一合并 [ m:1 ]
sysuse citytemp,clear
collapse (mean) heatdd cooldd tempjan tempjuly,by(region)
save citytemp,replace
合并方法
sysuse census.dta, clear
merge m:1 region using citytemp.dta, nogen

一对多合并 [ 1:m ] (m:1的逆向操作
待合并数据
sysuse census,clear // m
tab region
save census,replace
use citytemp,clear // 1
tab region

合并方法
use citytemp.dta, clear
merge 1:m region using census.dta, nogen

样本合并(横向合并 ,纵向合并)
横向关联 -joinby-
应用背景: 只需要保留两份数据中有对应关系的数据
webuse child
list, sepby(family_id)
sort family_id
save, replace
webuse parent, clear
sort family_id // 必须
list, sepby(family_id)
joinby family_id using "http://www.stata-press.com/data/r12/child"
sort family_id parent_id child_id
order family_id parent_id child_id
list, sepby(fam)

纵向合并:追加样本 -append-
两个数据库中的"同名变量"会自动对应累叠,顺序!
sysuse auto,clear
preserve
keep if _n < 30
save append_1,replace
restore
drop if _n < 30
save append_2,replace

use append_1.dta, clear
append using append_2.dta

-generate() 选项

use append_1.dta, clear
append using append_2.dta, gen(append_id) //0表示原来的,1表示附加的数据

缺失值的表示方法
stata 默认""/".",其余表示方法与数据库建立者的习惯有关,如"9999"
注 意: "." 大于任何自然数
缺漏值的识别
-summarize-
sysuse nlsw88.dta, clear
sum //obs数量

-misstable-命令:缺失值的基本统计
sysuse nlsw88.dta, clear
misstable summarize // 所有变量
misstable sum age-union // 指定变量

删除缺漏值
drop
sysuse nlsw88.dta, clear
drop if union == . //删除变量union为缺失值的数据

rmiss()函数
sysuse nlsw88.dta, clear
egen miss = rmiss(wage industry occupation) //missing 标识
list wage industry occupation miss if mis!=0
drop if miss!=0

missing()函数
sysuse nlsw88.dta, clear
drop if missing(grade,indus,occup,union,hours,tenure)

缺失值处理
对于缺失模式存在特点的数据,如Panel Data、时序,可采用前向或后向非缺漏值填补
示例:
replace *** = ***[_n-1] if ***==. //***代表变量名
replace *** = ***[_n+1] if missing(***) // help missing()
注意:一定要跟sort连起来用!!!
如果是panel,先xtset
by id: replace *** = L.*** if missing(***)

插补
多重插补 (multiple-imputation) -mi-
step1: 声明数据结构
stata命令:
mi set
mi register
step2: 补漏估计(imputation step) [-imputation model-]
在给定假设下,使用某种模型进行 M 次插值 (imputation)
stata命令:
mi impute
step3: 目标模型估计(Pooling step)
(completed-data analysis step) [-analysis model-]
利用第二步中的 M 组数据进行 M 次回归分析 并将 M 次估计结果整合起来,得到最终的结果

-Case-1-:随机缺漏(missing at random, MAR)
sysuse auto, clear
gen price_R = price
set seed 13579
gen random = uniform()
sum random
replace price_R =. if random>0.9

-Case-2-:非随机缺漏(missing not at random, MNAR)
gen price_U = price
replace price_U =. if price>11500
sum price price_*
sum weight mpg length foreign if price_R ~=.
sum weight mpg length foreign if price_U ~=.
save mi_auto, replace // 保存数据以备后续分析

多重插补实例
-1- mi set style 基本设定
view help mi_set##style
use mi_auto, clear
mi set wide // 设定
-2- mi register 声明包含缺漏值的变量
mi register imputed price_R
mi describe
-3- mi impute method 补漏
mi impute regress price_R wei len mpg turn forei, add(20) rseed(1357)
补漏效果
egen pav_R_im = rowmean(_*_price_R)
list price pav_R_im if price_R==., sep(0)

-E2- 多重补漏分析
离群值定义与定位
第25、50、75百分位上的数值分别称为第1、2、3四分位
四分位间距(interquartile range): iqr = p75-p25
上界(upper adjacent) = p75 + 1.5*iqr
下界(lower adjacent) = p25 - 1.5*iqr

-egenmore 提供的 outside() 函数 //需要安装
help egenmore
egen out = outside(price) // 计算离群值
egen out2 = outside(price), factor(2)
egen outby= outside(price), by(foreign) factor(2)
list price out*
keep if outby==. // 删除离群值

离群值处理
箱形图
help graph box

最上面的为outside values,至上而 下依次为upper 、 adjacent value、75th percentile (upper hinge)、 median、25th percentile (lower hinge)、lower adjacent value outside value
graph box price
graph box price, by(foreign)
graph box weight, by(foreign)

离群值定义与定位
完全删除
sysuse auto, clear
adjacent price, by(foreign)
drop if (price>8814&foreign==0) | (price>9735&foreign==1)

egenmore
sysuse auto, clear
egen outby = outside(price), by(foreign) factor(2)
drop if outby != .

截尾处理
sysuse nlsw88, clear
_pctile wage, percentile(1 99)
return list
drop if wage<r(r1) // 删除小于第1百分位的样本
drop if wage>r(r2) // 删除大于第99百分位的样本

涉及命令: -tsset-, -tsreport-, -tsfill-
webuse sunspot,clear
tsset time
gen lag1 = L.spot
gen lag2 = L2.spot //2 代表滞后的期数
gen f1 = F.spot
gen f2 = F2.spot //2 代表往前的期数
gen d1 = D.spot
gen d2 = D2.spot //2 代表差分的期数间隔
list spot lag* f* d* in 1/12
tsset,clear

drop if _n == 2 | _n == 23
tsset time
tsreport, report
tsreport, report list
tsfill
tsreport, report
tsreport, report list
count if spot == . //仅仅补充time缺失的值

时间序列数据的处理
涉及命令: -xtset-, -xtdes-, -xtbalance-,

webuse airacc,clear
xtset airline time //time 必须是numerical
xtdes

drop if _n==2|_n==23
xtdes //仅显示出现频率最高的9种

面板数据的处理
生成平衡面板
findit xtbalance
ssc install xtbalance,replace

xtbalance,range(1 4)
xtdes
replace ait = . if _n==33
xtbalance, range(1 4) miss(ait)
xtdes
replace ait = . if _n==33
replace pmiles = . if _n==22
xtbalance, range(1 4) miss(_all)

生成连续的obs代码
tab airline
egen id = group(airline)
list airline id time in 1/40, sepby(airline)

涉及命令: -sum-, -tab-, tabstat-,-collapse-
单层分组统计量
bysort,sum
sysuse nlsw88.dta,clear
bysort race: sum wage

tabstat 命令
tabstat wage, by(race) stat(mean sd med min max)
对工资分种类(race)进行统计分析,均值,标准差,中位数,最小值,最大值
tabstat wage hours ttl_exp, by(race) ///
stat(n mean sd med min max) ///
format(%6.2f) columns(statistics)

单层分组统计量
tabulate 命令 vs. table命令
tab race //tabulate
tab race, summarize(wage)
tab occupation,sort //tabulate
table race
tabulate race occupation //
table race occupation
table race married occupation //table 不能简写

统计描述之表格
二层和三层分组统计量
bysort race married: sum wage
bysort race married: tabstat wage, ///
by(union) s(n mean sd p50 min max)
tabstat wage, by(race married union) ///
s(n mean sd p50 min max) // by不能和多个变量连用
bysort race married: tab union, sum(wage)

多层次分组统计量
基本架构:table var1 var2 var3, by(var4) contents(...)

table race married union, ///
by(collgrad) c(mean wage) format(%4.2f) //format浮点型,长度4,小数点后两位
table race married union, ///
by(collgrad) c(mean wage freq) format(%4.2f)

多层次分组统计量
基本架构:table var1 var2 var3, by(var4) contents(...)
table race married union, ///
by(collgrad) c(mean wage) format(%4.2f) //format浮点型,长度4,小数点后两位
table race married union, ///
by(collgrad) c(mean wage freq) format(%4.2f)

转换原资料为分组统计量:collapse 命令
help collapse
sysuse nlsw88.dta,clear
collapse (mean) wage hours ///
(count) n_w=wage n_h=hours, ///
by(industry)
browse
sysuse nlsw88.dta,clear
collapse (mean) wage hours ///
(count) n_w=wage n_h=hours, ///
by(industry race)
browse
*注意!collapse后数据将会被替换,不要轻易保存修改原始数据,
*可以和preserve restore结合用

global vs. local macros
global: 多个do file 或者整个do file有效
local: 仅在给定的do file或者特定的do file 段落有效
sum mpg rep78 gear_ratio
regress price mpg rep78 gear_ratio ,noheader
//等价于
global xlist1 mpg rep78 gear_ratio
sum $xlist1

macros
regress price $xlist1 ,noheader//对比
local xlist2 "mpg rep78 gear_ratio"
sum `xlist2'
regress price `xlist2' ,noheader
local xlist3 "length turn headroom"
regress price `xlist3' ,noheader//另外的case
sysuse auto,clear
local xlist1 "mpg rep78 gear_ratio"
local xlist2 "mpg rep78"
reg price `xlist1'
reg price `xlist2‘ //成功的样子是这样的。。。。。

foreach loop
gen sumx_2=0
foreach var of varlist x1 x2 x3 x4 {
replace sumx_2=sumx_2 + `var'
}
sum sumx_1 sumx_2
等价于
gen sumx_3=0
global varlist x1 x2 x3 x4
foreach x of global varlist {
replace sumx_3=sumx_3 + `x'
}
sum sumx_*

forvalues loop
gen sumx_4=0
forvalues i=1/4{
replace sumx_4=sumx_4 + x`i'
}
sum sumx_*
while loop
gen sumx_5=0
local i 1
while `i'<=4{
replace sumx_5=sumx_5 + x`i'
local i=`i'+1
}
sum sumx_*

循环(1. foreach loop 2. forvalues loop 3. while loop)
统计表格输出
1、复制黏贴
2、logout(外部命令)
logout, save(filename) word/excel/tex [options: command]
示例
logout, save(mytable) word replace: sum price- foreign
logout, save(mytable) excel replace: sum price- foreign
logout, save(mytable) tex replace: sum
logout, clear word dta tex save(mytable) replace: sum

估计结果的输出
-esttab-, -logout-, -xml_tab-, -outreg2-
- 评述:
(1) 整体而言,-outreg2- 命令最为好用, 可以同时实现对 Word, Excel, LaTeX 的支持
(2) -esttab-, -xml_tab- 用起来也比较方便


结果输出
-基本用法
esttab m1 m2 m3
*-修改显著水平,紧凑的方式呈现结果
esttab m1 m2 m3, ar2 compress nogap star(*# 0.1 **# 0.05 ***# 0.01)
*-呈现 p-value,置于 "[]" 中
esttab m1 m2 m3, ar2 compress nogap star(* 0.1 ** 0.05 *** 0.01) b(%6.1f) brackets p
*-呈现标准化系数
esttab m1 m2 m3, beta
*-显示变量的标签,而非变量名
label var weight "汽车重量"
esttab m1 m2 m3, label
*-呈现弹性系数
esttab m1 m2 m3, margin // 默认情况下,略去 Constant
esttab m1 m2 m3, margin constant
*-输出文件的其它格式
esttab m1 m2 m3 using myout.html, replace // 网页
esttab m1 m2 m3 using myout.tex, replace // TeX 文档 这个文档可以直接插入 TeX 中,采用 \input{}
esttab m1 m2 m3 using myout.csv, replace
* 其它输出类型:smcl, fixed, tab, csv, scsv, rtf, html, tex, and booktabs

*-输出至 Excel
esttab m1 m2 m3 using myout.csv, replace
esttab m1 m2 m3 using myout.csv, replace ///
compress nogap nonotes ///
addnotes("*** 1% ** 5% * 10%" "" "")

-esttab- 命令:回归结果的呈现
reg price wei, robust
est store rob01
reg price wei len, robust
est store rob02
reg price wei len mpg foreign, robust
est store rob03

esttab rob01 rob02 rob03 using myout.csv, append ///
compress nogap b(%6.3f) scalars(r2_a N F) ///
star(* 0.1 ** 0.05 *** 0.01) obslast ///
title(Robust check of the main results) ///
addnotes("The White(1980) robust regression" "" "")

-esttab- 命令:在已有文件的基础上追加新结果
*-基本设定
logout, save(filename) word(excel,tex) [options]: esttab ……
-示例
sysuse auto, clear

* Excel 文档
logout, save(myreg) excel dec(3) replace: reg price weight mpg rep78 foreign

* Word 文档
logout, save(myreg) word dec(3) replace: reg price weight mpg rep78 foreign

-logout- 命令:输出 【Excel、Word、TeX文档】
*-基本设定
xml_tab m1 m2 m3 m4, replace
* 说明:
* (1) 默认存储于当前活动目录下,名称为 stata_out.xml;
* (2) 默认显示变量标签,而非变量名称,变量标签不支持中文
*-稍作美化
xml_tab m1 m2 m3 m4, save(result) sheet(OLS) replace ///
tstat below stats(r2 r2_a N)

*-进一步美化
xml_tab m1 m2 m3 m4, save(result) sheet(OLS) replace ///
tstat below stats(r2 r2_a N) ///
drop(_Ioccup*) font("Times New Roman" 10) ///
title(Table 1 Basic Regression of US women wage) ///
tblank(1) format(NCCR3) ///
note("Occupation dummies are not presented
* 说明:
* (1) 若部分变量有中文标签,需要事先修改,或附加 -nolabel- 选项;
* (2) 有关 -format()- 选项的填写,请参阅帮助文件;
* (3) save() 选项中可填写具体的存储路径
* (4) 优势:可以用一个-Excel-文件存储多个-sheet-

-xml_tab- 命令:专业输出 【Excel 文档】
xml_tab a1 a2, save(result) sheet(Logit) append /// //注意此处的变化
tstat below stats(r2 r2_a N) ///
drop(_Ioccup*) font("Times New Roman" 15) ///
title(Table 2 Determinants of being a Union member) ///
tblank(1) format(NCCR3) ///
note("Occupation dummies are controlled, but not presented")

* 说明:
* (1) 不同类别或不同阶段的回归结果,可以分别放入不同的 sheet() 中;
* (2) 除第一个 sheet 使用 -replace- 选项外,
* 后续追加的 sheet 使用 -append- 选项
* (3) 上述结果稍作整理即可贴入-Word-,
* 建议使用-Word-表格自动调整功能

-xml_tab- 命令: 输出结果的追加
基本用法:在数据窗口中呈现结果
outreg2 [m1 m2 m3] using tab01, seeout replace
输出 Word 或 Excel 文档
outreg2 [m1 m2 m3] using tab01.doc, replace
outreg2 [m1 m2 m3] using tab01.xls, replace
outreg2 [m1 m2 m3] using tab01, excel replace
outreg2 [m1 m2] using tab01.xls, replace
outreg2 [m3] using tab01.xls,append
同时输出Word和Excel文档(亦可增加 tex 选项,输出 tex 文档)
outreg2 [m1 m2 m3] using tab01, word excel replace

*-使用变量标签
label var hours "每周工作时数"
label var married "已婚==1,未婚==0"
outreg2 [m1 m2 m3] using tab01, word replace label
outreg2 [m1 m2 m3] using tab02, word replace label(insert) // 同时呈现变量和标签
*-s.e., t值, 与 p值
outreg2 [m1 m2 m3] using tab01, word replace tstat // 呈现 t-value
outreg2 [m1 m2 m3] using tab01, word replace pvalue // 呈现 p-value
*-小数的显示方式 -tdec()-, -rdec()- 选项
outreg2 [m1 m2 m3] using tab01.doc, replace tstat tdec(2) // t-value小数点后两位
outreg2 [m1 m2 m3] using tab01, word replace tstat rdec(3) // R2小数点后三位

outreg2- 命令:专业输出【Word、Excel.txt文档】
*- "()", "[]", 与 " "
outreg2 [m1 m2 m3] using tab01, word replace pvalue bracket tdec(3)
outreg2 [m1 m2 m3] using tab01, word replace tstat tdec(2) noparen

*-新结果的追加
outreg2 [logit] using tab01.doc, append (logit为新结果)
*-弹性系数、标准化系数和边际效果
reg wage hours ttl_exp married
mfx, eyex // 计算弹性系数
outreg2 using tab02_mfx, word replace // -replace- 新建word文档
reg wage hours ttl_exp married d_race*
mfx, eyex
outreg2 using tab02_mfx, word append // 追加结果
*-有选择地呈现变量
outreg2 [m1 m2 m3] using tab01.doc,replace drop(d_occu*)
* 说明:
* (1) 亦可使用 keep() 选项筛选需要呈现的变量;
* (2) 使用 order() 选项可以改变变量的先后顺序
*-表格的标题
outreg2 [m1 m2 m3] using tab01, word replace title("表1: 美国妇女工资决定因素估计结果")
*-最后一行的统计量: adj-R2, F值
outreg2 [m1 m2 m3] using tab01, word replace ///
title("表1: 美国妇女工资决定因素估计结果") ///
drop(d_occu*) ///
adjr2 e(F ll)

*-重新定义注释
outreg2 [m1 m2 m3] using tab01, word replace ///
title("表1: 美国妇女工资决定因素估计结果") ///
drop(d_occu*) nonote ///
addnote("注:(1)***,**,*分别表示在1%,5%和10%水平上显著;", ///
"(2)括号中为标准误;", ///
"(3)m3中控制了职业虚拟变量 d_occu2-d_occu13。")
* 说明:
* (1) -nonote- 选项:
不显示原有英文注释 "Standard errors in parentheses" 和 "*** p<0.01, ** p<0.05, * p<0.1"
* (2) -addnote- 选项:addnote("注释1", "注释2", "注释3")

Stata制图
Stata 图形的种类


graph twoway 二维图
scatter 散点图
line 折线图
area 区域图
lfit 线性拟合图
qfit 非线性拟合图
histogram 直方图
kdensity 密度函数图
function 函数图

graph matrix 矩阵图
graph bar 条形图
graph dot 点图
graph box 箱形图
graph pie 饼图

ac 相关系数图
pac 偏相关系数图
irf 脉冲相应函数图
二维图命令的基本结构

-整体架构

twoway (单元图1) (单元图2) (...) ,选项1 选项2 ...

twoway 单元图1 || 单元图2 || ... , 选项1 选项2 ...

-单元图的定义

(单元图类型 y1 y2 ... x , 选项1 选项2 ...)



一个标准的实例

sysuse sp500, clear
twoway (line high date) (line low date) ///
, ///
title("图1:股票最高价与最低价时序图", box) ///
xtitle("交易日期", margin(medsmall)) ///
ytitle("股票价格") ///
ylabel(900(200)1400) ymtick(##5) ///
legend(label(1 "最高价") label(2 "最低价")) ///
note("资料来源:Stata公司,SP500.dta") ///
caption("说明:我做的第一幅Stata图形!") ///
saving(mypig.gph, replace)
几种常用图形的简单示例

sysuse sp500, clear

-散点图
twoway scatter high date

-折线图
twoway line change date

-柱状图
twoway bar open date in 1/50

-直方图
histogram change

-密度函数图
kdensity close, normal

-数学函数图
twoway (function y=sin(x), range(-10 10) lw(*1.5)) ///
(function y=cos(x), range(-10 10) lw(*2.0)), ///
ytick(-2(0.5)2) ylabel(, angle(0)) ///
yline(0, lcolor(black*0.5) lpattern(dash)) ///
scheme(s1mono)
图形的管理

图形的保存

help graph save

第一种方式
sysuse sp500, clear
twoway line high date
graph save fig1.gph, replace
graph use fig1.gph // 重现图形

第二种方式
twoway line high date, saving(A3_price.gph, replace)

手动方式:右击 —> Save graph ...—> 填入图形名称,选择保存类型
图形的导出

help graph export

sysuse sp500, clear
twoway line high low date
graph export A3_price.wmf, replace
graph export "D:\mypaper\A3_price.wmf", replace
注:相当于另存为其他格式的图形

后缀 附加选项 输出格式
------------------------------------------------------------
.ps as(ps) PostScript
.eps as(eps) Encapsulated PostScript
.wmf as(wmf) Windows Metafile
.emf as(emf) Windows Enhanced Metafile
.pict as(pict) Macintosh PICT format
.png as(png) PNG (Portable Network Graphics)
.tif as(tif) TIFF
other must specify as()
------------------------------------------------------------
调整输出图片的分辨率
twoway line high low date
graph export A3_price2.tif, width(3160) height(1800) replace
shellout A3_price2.tif
*-注意:仅适用于 .png 和 .tif 格式的图片
图形的调入

help graph use

graph use fig1.gph
graph use fig1, scheme(s1mono)
graph use fig1, scheme(economist)


插入 Word

shellout mypaper.doc

* 右击 —> copy —> 粘贴到Word中
* 若图片太大,可以右击图片->设置图片格式->大小,进行相应的调整
* 建议先将图形输出为 wmf 格式,然后再贴入 word


查询
graph dir


重新显示图形

twoway line high low date
graph display, scheme(sj)
graph save A3_price_sj.gph, replace


图形的合并

help graph combine

sysuse sp500, clear
twoway line high low date
graph save A3_price.gph, replace
twoway line high low date, scheme(s1mono)
graph save A3_price_sj.gph, replace
graph combine A3_price.gph A3_price_sj.gph


删除图形
erase A3_price.gph
graph dir
图形的显示模式
-两种设定方式
set scheme schemename [, permanently]
graph ... [, ... scheme(schemename) ...]

实例
sysuse auto, clear

twoway scatter price weight, scheme(sj)
graph save A3_gr1.gph, replace
graph use A3_gr1.gph, scheme(s2color)

set scheme economist
twoway scatter price weight
中文投稿的黑白图

set scheme s1mono

sysuse auto, clear
twoway scatter price weight
graph bar price, over(foreign)
graph bar price, over(rep78) over(foreign)

sysuse sp500, clear
twoway (connect high date,sort msymbol(D)) ///
(connect low date, msymbol(+)) in 1/20 ///
, scheme(s1mono)

webuse autoscatter mpg weight

scatter mpg headroom weight //Overlaid scatterplot
scatter mpg headroom turn weight //Multiple overlaid scatterplots
scatter mpg weight in 1/15, mlabel(make) //Scatterplot with marker labels
webuse censusscatter death medage [w=pop65p], msymbol(circle_hollow) //Scatterplot with weighted markers

Scatter and line plots
Line graph

webuse uslifeexp
line le yearline le_wm le_bm year, legend(size(small)) //Overlaid line graph
line le le_male le_female year, legend(size(medsmall)) //Multiple overlaid

line graphs
webuse sp500twoway connected close date in 1/15 //Connected line graph
twoway connected high low date in 1/15 //Overlaid connected line graph
twoway connected high low close date in 1/15 //Multiple overlaid connected line graphs


webuse sp500twoway rarea high low date in 1/15 //Range plot with area shading
twoway rbar high low date in 1/15 //Range plot with bars
twoway rcap high low date in 1/15 //Range plot with capped spikes
twoway rcapsym high low date in 1/15 //Range plot with spikes capped by marker symbols
twoway rconnected high low date in 1/15 //Range plot with connected lines
twoway rspike high low date in 1/15 //Range plot with spikes

Range and area plots

webuse gnp96twoway area d.gnp96 date
twoway area high close low date in 1/15 //Overlaid area plots

webuse pop2000replace maletotal = −maletotaltwoway area maletotal agegrp, horizontal ||area femtotal agegrp, horizontal //Overlaid horizontal area plots

Area plot
webuse sp500twoway bar change date in 1/57 //Twoway bar plot

twoway bar high low date in 1/15 //Overlaid twoway bar plots
webuse pop2000replace maletotal = −maletotaltwoway bar maletotal agegrp, horizontal || bar femtotal agegrp, horizontal //Horizontal overlaid twoway bar plots

Bar and dropped-line charts
webuse uslifeexpgraph bar le le_w le_b
webuse citytempgraph bar tempjan, over(region) //Bar chart by values of categorical variable
graph bar tempjan tempjuly, over(region) //Bar chart with multiple bars graphed over another variable
graph hbar tempjan tempjuly, over(region) //Horizontal bar chart with multiple bars graphed over another variable
graph bar tempjan tempjuly, over(region) stack //Stacked bar chart
graph bar heatdd cooldd, over(region) blabel(total) //Bar chart with bar labels
Bar chart
webuse sp500twoway dropline change date in 1/57 //Twoway dropped-line plot
webuse gnp96twoway dropline d.gnp96 date in 1/71, horizontal //Horizontal twoway dropped-line plot
webuse sp500twoway spike change date in 1/57 //Twoway spike plot

Twoway dropped-line plot
webuse censusgraph pie pop, over(region)
graph pie pop, over(region) pie(1,explode) pie(2,explode) pie(3,explode) pie(4,explode) //Pie chart with exploded pieces
graph pie pop, over(region) plabel(_all name) //Pie chart with labels
graph pie pop, over(region) pie(2,explode) plabel(2 percent) //Pie chart with exploded piece and percentage label
Pie charts
webuse nlsw88graph dot wage, over(occ)
graph dot wage hours, over(occ) //Dot chart of two variables by categorical variable
graph dot wage hours ttl_exp, over(occ) //Dot chart of three variables by categorical variable
Dot charts
webuse sp500
histogram open //Histogram of continuous variable as density
histogram open, frequency kdensity //Histogram of continuous variable with frequencies and overlaid kernel density estimate
histogram open, frequency normal //Histogram of continuous variable with frequencies and overlaid normal density curve
webuse bplong
graph box bp, over(agegrp) //Box plot by values of categorical variable
Distribution plots
webuse bpwide
graph box bp_before bp_after // Box plot of two variables
graph box bp_before bp_after, over(agegrp) // Box plot of two variables by values of categorical variable
webuse bplong
graph box bp, over(agegrp) horizontal // Horizontal box plot of variable by values of categorical variable
webuse bpwide
graph box bp_before bp_after, over(agegrp) // Horizontal box plot of two variables by values of categorical variable

webuse autosymplot price //Symmetry plot
gladder mpg, fraction //Histograms of transforms according to ladder of powers
webuse citytempqladder heatdd //Quantiles of transforms according to ladder of powers
spikeplot age //Spike plot
quantile price //Quantile plot
qnorm price //Quantile–normal plot

webuse auto
twoway lfit mpg weight //Twoway linear prediction plot
twoway scatter mpg weight || lfit mpg weight //Scatterplot with overlaid linear prediction plot
twoway scatter mpg weight || lfit mpg weight ||, by(foreign, total row(1)) //Scatterplot with overlaid linear prediction plot by variable
twoway lfitci mpg weight //Twoway linear prediction plot with Cis
twoway lfitci mpg weight || scatter mpg weight //Linear prediction plot with CIs with overlaid scatterplot
twoway fpfit mpg weight //Twoway fractional-polynomial prediction plot
Regression fit plots
工作路径设置、查询安装、寻求帮助、课程使用数据介绍
数据的输入、存储、输出
stata基本与常用命令语句
变量
样本
缺失值、离群值处理
时间序列数据、面板数据处理
统计表格之描述、macros、循环
结果输出
制图
Full transcript