1、第一步先打开stata,然后打数据导入到stata当中。需要注意的是,我们需要打开一个有时间变量的数据,又些操作需要用到时间变量。为了演示方便,我们打开系统自带的数据sysuse sp500.dta打开数据查看一下,发现第一列date是表示时间的量。
2、我们想生成最大值,与最大值的差,还有数据的变化范围这三个向量。 sort opengen o_max = open[_N] //开盘价的最大值gen o_diff = open[_n] - open[_N] // 开盘价与最大值的差gen b_diff = open[_N] - open[1] // 最大值与最小值之间的范围其中:open[1],表示的就是第一个数值,open[_n]指的就是第n个数。
3、我们想生成差分(这个十分常用,有两种使用办法)第一种: gen n = _n tsset n gen D_open = D.open第二种sort dategen d_open = open[_n] - open[_n-1]list ?_open in 1/10 //此处用了我们之前介绍的小技巧第二种方法十分通用,可以用于所有类型的数据。
4、对数差分,这个更是常用!因为如果要是做时间序列的模型钱砀渝测(VAR族),都需要对数据做对数差分,这是十分方便的,对数差分的经济意义就是增长率。方法一 gen ln_open = ln(open) gen D_ln_open = D.ln_open方法二gen dln_open = ln(open[_n]) - ln(open[_n-1])我平时经常使用第一种方法比较直观,第二种也可以,比较简单可以观察下图,发现生成的数据完全一致
5、移动平均,直接上命令,观察命令就是,我加上我前面内个数加上后面内个数除以3就是我的移动平均,你在我后面,你加上我,加上你后面的内个数再除以3就是你的移动平均。 gen mv3_open = (open[_n-1] + open[_n] + open[_n+1]) / 3 list open mv3_open in 1/10思考个小问题,算完之后会缺几个数?答案是2,缺第一个和最后一个,不懂可以自己输命令试试