Gretl 中的加权移动平均线
Weighted Moving Avarage in Gretl
我有一个关于 gretl 的问题,以及如何计算移动平均值的过滤器。
我有一个时间序列,我想用这些权重计算以 5 为中心的加权移动平均值:0.15, 0.2, 0.3, 0.2, 0.15.
在 gretl 的主页我们有 Variabile window 在那里我可以 select Filter 但是我想做的事情没有选择,例如,简单的移动平均。
在 R 我会做这样的事情:
c<-as.vector()
for (in in 3:(T-2)){
c<-rbind(c, 0.15*x[i-2]+0.2*x[i-1]+0.3*x[i]+0.2*x[i+1]+0.15*x[i+2]}
其中 x 是我的时间序列,T 是观察次数。
但我的问题是:
- 在 gretl 中是否存在用户友好的方法?
- 如果没有,在控制台中执行此操作的最佳方法是什么?是否存在特定功能?
好吧,我不知道您所说的用户友好到底是什么,但是既然您想要那些特定的权重,我想输入一些数字是没有办法的,对吗?
因此,如果我对您的理解正确,并且给定您的序列 x(在声明并识别为时间序列的数据集中),那么您只需要输入公式:
series weighma = 0.15 * x(+2) + 0.2 * x(+1) + 0.3 * x + 0.2 * x(-1) + 0.15 * x(-2)
(除了 'series' 你也可以输入 'genr' 或直接忽略它,但我推荐这个明确的变体。括号内的 + 符号也是如此,表示引导而不是滞后。)
'weighma' 这个名字当然是随意的。
您至少可以在两个地方输入该公式:从菜单中选择添加/定义新变量,这会给您一个带有公式字段的对话框 window,或者打开 gretl 控制台(或脚本编辑器 window)。
在脚本中可能更灵活的解决方案可以使用 gretl 变量列表和 'lincomb' 函数,如下所示:
maxlead = 2
matrix weights = {0.15, 0.2, 0.3, 0.2, 0.15}
list xx = lags( nelem(weights), x(maxlead + 1) )
series weighma = lincomb(xx, weights)
正确的 maxlead 值也可以在居中 MA 的假设下从权重向量的长度推断出来,但我保留它。
我有一个关于 gretl 的问题,以及如何计算移动平均值的过滤器。
我有一个时间序列,我想用这些权重计算以 5 为中心的加权移动平均值:0.15, 0.2, 0.3, 0.2, 0.15.
在 gretl 的主页我们有 Variabile window 在那里我可以 select Filter 但是我想做的事情没有选择,例如,简单的移动平均。
在 R 我会做这样的事情:
c<-as.vector()
for (in in 3:(T-2)){
c<-rbind(c, 0.15*x[i-2]+0.2*x[i-1]+0.3*x[i]+0.2*x[i+1]+0.15*x[i+2]}
其中 x 是我的时间序列,T 是观察次数。
但我的问题是:
- 在 gretl 中是否存在用户友好的方法?
- 如果没有,在控制台中执行此操作的最佳方法是什么?是否存在特定功能?
好吧,我不知道您所说的用户友好到底是什么,但是既然您想要那些特定的权重,我想输入一些数字是没有办法的,对吗? 因此,如果我对您的理解正确,并且给定您的序列 x(在声明并识别为时间序列的数据集中),那么您只需要输入公式:
series weighma = 0.15 * x(+2) + 0.2 * x(+1) + 0.3 * x + 0.2 * x(-1) + 0.15 * x(-2)
(除了 'series' 你也可以输入 'genr' 或直接忽略它,但我推荐这个明确的变体。括号内的 + 符号也是如此,表示引导而不是滞后。) 'weighma' 这个名字当然是随意的。
您至少可以在两个地方输入该公式:从菜单中选择添加/定义新变量,这会给您一个带有公式字段的对话框 window,或者打开 gretl 控制台(或脚本编辑器 window)。
在脚本中可能更灵活的解决方案可以使用 gretl 变量列表和 'lincomb' 函数,如下所示:
maxlead = 2
matrix weights = {0.15, 0.2, 0.3, 0.2, 0.15}
list xx = lags( nelem(weights), x(maxlead + 1) )
series weighma = lincomb(xx, weights)
正确的 maxlead 值也可以在居中 MA 的假设下从权重向量的长度推断出来,但我保留它。