如何得到一个表中某个变量的三日移动平均值

如题所述

第一步先打开stata,然后打数据导入到stata当中。
需要注意的是,我们需要打开一个有时间变量的数据,又些操作需要用到时间变量。为了演示方便,我们打开系统自带的数据
sysuse sp500.dta
打开数据查看一下,发现第一列date是表示时间的量。
2
/5
我们想生成最大值,与最大值的差,还有数据的变化范围这三个向量。
sort open
gen o_max = open[_N] //开盘价的最大值
gen o_diff = open[_n] - open[_N] // 开盘价与最大值的差
gen b_diff = open[_N] - open[1] // 最大值与最小值之间的范围
其中:open[1],表示的就是第一个数值,open[_n]指的就是第n个数。
3
/5
我们想生成差分(这个十分常用,有两种使用办法)
第一种:
gen n = _n
tsset n
gen D_open = D.open
第二种
sort date
gen d_open = open[_n] - open[_n-1]
list ?_open in 1/10 //此处用了我们之前介绍的小技巧
第二种方法十分通用,可以用于所有类型的数据。
4
/5
对数差分,这个更是常用!因为如果要是做时间序列的模型(VAR族),都需要对数据做对数差分,这是十分方便的,对数差分的经济意义就是增长率。
方法一
gen ln_open = ln(open)
gen D_ln_open = D.ln_open
方法二
gen dln_open = ln(open[_n]) - ln(open[_n-1])
我平时经常使用第一种方法比较直观,第二种也可以,比较简单
可以观察下图,发现生成的数据完全一致
5
/5
移动平均,直接上命令,观察命令就是,我加上我前面内个数加上后面内个数除以3就是我的移动平均,你在我后面,你加上我,加上你后面的内个数再除以3就是你的移动平均。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2022-12-28
答:A B C 1 10 20 2 15 10 3 5 15 4 30 10 在C1单元格中输入公式=AVERAGE(A1:BA)回车 然后移动鼠标到C1单元格左下角,变成黑色十字架, 按住左键向下拖(向下复制公式)就得出来了。
相似回答