Stata数据管理:创建变量
背景
通常我们需要对变量进行相应的处理以满足实证需要。
参考
本文是对连玉君老师Stata课程的整理,连玉君老师创办的连享会CSDN主页:连享会
目录
- 1._n与_N
- 2.生成虚拟变量
- 3.生成交互项
- 4.egen命令介绍
1. _n与_N的使用
- 定义:Stata中_n是样本的序号(变量),_N是样本数(单值)。
- _n永远存在,但不能被list命令显示。
- _n会随着变量的排序而变化
下面举例说明
sysuse nlsw88.dta,clear
list age wage in 1/10
list _n //错误
sort hours //hours变量升序
gen nid_1 = _n
list nid_1 hours race in 1/10
sort wage //对wage变量进行排序
gen nid_2 = _n
list hours wage nid_1 nid_2 in 1/10
dis _N //N是一个单值
scalar obs = _N
qui sum wage //得到wage变量的均值
dis r(mean)*_N
dis r(mean)*obs
_n与_N的应用
1.生成最大值、与最大值的差值、极差
sysuse sp500, clear
sort open
sum open
dis r(max) //生成最大值(单值)
gen o_max = open[_N] //生成最大值
gen o_diff = open[_n] - open[_N] //与最大值的差
gen o_range = open[_N] - open[1] //极差
list open o_max o_diff o_range in 1/10
2.差分与对数差分
sysuse sp500,clear
sort date
gen d_open = open[_n] - open[_n-1] //生成open的一阶差分变量
gen ln_open = log(open)
gen d_lnopen = ln_open[_n] - ln_open[_n-1] //生成对数差分变量
gen dln_open = ln(open[_n]) - ln(open[_n-1]) //等价上述命令
* 事实上,在经济学中,对数差分可视为增长率
list open d_lnopen in 1/10
3.移动平均
gen mv3 = (open[_n-1] + open[_n] + open[_n+1] )/3
* 三阶移动平均
list open mv3 in 1/10
4.时间算子法
* 上述问题也可通过时间算子进行运算
tsset date
gen open_l = L.open //一阶滞后
gen open_l2 = L2.open //二阶滞后
gen f_open = F.open //前推一项
gen open_d = D.open //一阶差分
gen open_d2 = D2.open //二阶差分
*计算增长率
gen r1 = D.close/L.close //方法1
gen lnclose = ln(close)
gen r2 = D.lnclose //方法2
list date r1 r2 in 1/10
作者发烧了,先写到这