目录
stata自带示例数据集
1.数据描述
2. 标签重命名
3.截面数据统计
4.面板数据定义
5.面板数据统计
6.分组统计
7.连续值自动划分等级
8.计算分位数
9.字符串截取与转换成数字
10.字符串变量设置类别编码
11. 自动生成均值,中位数等
12. 删除变量或样本
13. 删除指定变量中含有缺失值的样本
14.缩尾处理
15.中介效应
16.长面板与宽面板互转
17.多列合并
18.面板数据指定前期值
19.概率转移矩阵
20.双样本T检验
# 引用数据
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
。。。。。。。。待完成