目录
stata自带示例数据集
1.数据描述
2. 标签重命名
3.截面数据统计
4.面板数据定义
5.面板数据统计
6.分组统计
7.连续值自动划分等级
8.计算分位数
9.字符串截取与转换成数字
10.字符串变量设置类别编码
11. 自动生成均值,中位数等
12. 删除变量或样本
13. 删除指定变量中含有缺失值的样本
14.缩尾处理
15.中介效应
16.长面板与宽面板互转
17.多列合并
18.面板数据指定前期值
19.概率转移矩阵
20.双样本T检验
stata自带示例数据集
美国各汽车品牌制造特征向量 autornd.dta
分性别、年龄血压样本 bplong.dta
前后两次测血压差 bpwide.dta
癌症影响因素 cancer.dta
普查数据 census.dta
城市温度气候数据 citytemp.dta
99年教育与gdp数据 educ99gdp.dta
96年GNP数据 gnp96.dta
寿命预期数据 lifeexp.dta
美国年轻女子职业与工资数据88年数据 nlsw88.dta
美国各种族性别数据2000年 pop2000.dta
美国标普500指数 sp500.dta
美国寿命预期数据 uslifeexp.dta
美国寿命预期数据2 uslifeexp2.dta
选举数据 voter.dta
汽车指标数据 auto.dta
美国工作与收入数据 nlswork.dta
# 引用数据
sysuse nlsw88.dta
1.数据描述
describe # 简写des
2. 标签重命名
rename 原始标签名称 新标签名称
# 例如rename Stkcd id
3.截面数据统计
summarize #简写sum
4.面板数据定义
use http://www.stata-press.com/data/r15/nlswork.dta
xtset idcode year, yearly
5.面板数据统计
基于4步骤定义面板数据后进行统计
xtsum
6.分组统计
使用上面数据分年龄统计收入水平
方式一
sort age
by age : sum ln_wage
方式二
tabstat ln_wage ,by(age) stat(mean sd min max)
7.连续值自动划分等级
例如将下列年龄进行划分
xtile age_rank =age , nquantile(5) # 根据分位数划分5个等级
看看效果
tabstat age,by(age_rank) stat(mean sd min max)
8.计算分位数
cumul age ,gen(k) # 新增变量k就是age的分位数
9.字符串截取与转换成数字
例如:股票代码600519.SH
replace id=substr(id,1,6) # 其中id是证券代码# 若需要字符串转数字需要下面命令
destring id, replace
10.字符串变量设置类别编码
通常情况一些离散变量是字符串类型的,模型计算需要转换成数值类型的,例如:北京,对应数字1
转换代码
encode province, gen (province_class) #其中province_class是新的编码变量
查看编码对应的字符串用下面代码
label list province_class
那么已经编码的变量如何转换(映射)回字符串
decode province_class , generate(province_str)
11. 自动生成均值,中位数等
使用egen命令生成,详细help egen
egen xbar = mean(x) # 新增xbar字段,值是x变量的均值
12. 删除变量或样本
条件删除样本
drop if (IND == "J66")|(IND == "J67") # 删除IND字段值是 "J66" 或 "J67"
删除变量
drop id # 删除id变量
13. 删除指定变量中含有缺失值的样本
需要安装dropmiss命令
示例
dropmiss a b c ,obs any
处理后的数据
14.缩尾处理
winsor2 GRO , replace cuts(1 99) # 处理GRO变量,保留1-99百分比变量值
15.中介效应
中介效应有很多模型,具体可参考:
https://stats.idre.ucla.edu/stata/faq/how-can-i-do-moderated-mediation-in-stata/
对于model1 示例如下
m = a0 + a1x
y = b0 + b1m + b2x + b3mx
conditional indirect effect = a1(b1 + b3x)
Normal theory estimation using the delta method for model 1.
quietly summarize x
global m=r(mean)
global s=r(sd)
generate mx=m*x /* mv by iv interaction */
sem (m <- x)(y <- m x mx)
16.长面板与宽面板互转
17.多列合并
stack命令
18.面板数据指定前期值
例如面板数据知道当前期一个人的收入水平,想得到前1期收入水平做对比。
use http://www.stata-press.com/data/r15/nlswork.dta # 使用示例数据
xtile wage_rank = ln_wage , nquantile(5) # 将收入自动划分等级
xtset idcode year # 定义面板
gen pro_wage_rank = L.wage_rank #定义pro_wage_rank是前1一期收入等级 # 前n期 用Ln.xxx表示,前1期1可以省略
19.概率转移矩阵
根据上个示例想得到每年总样本的收入水平变化情况,可能需要一个概率矩阵。下面代码只生成70年概率转移矩阵
qui estpost tab pro_wage_rank wage_rank if year == 70
esttab ., cell(rowpct(fmt(2)) count(fmt(g) par keep(Total))) collabels(none) unstack noobs nonumber nomtitle eqlabels(, lhs(`year_item'转移矩阵)) varlabels(, blist(Total "{hline @width}{break}"))
概率转移矩阵一大特点对角线值最大,即大概率情况下状态是保持不变的。
20.双样本T检验
使用ttesti命令,我常用 ttesti #obs1 #mean1 #sd1 #obs2 #mean2 #sd2
ttesti 32080 0.567751246882793 0.3032139549246353 32080 0.5659769326683292 0.30021235122326406
H0假设是均值相等,但是检测结果是Ha:diff<0 的概率最大。
21.固定效应
22.双重差分
21.倾向性匹配
22.断点回归
23.logit
24.OLS
。。。。。。。。待完成