R中时间序列的加权移动平均值

时间:2017-11-14 11:11:30

标签: r time-series moving-average weighted-average

我在时间序列中相当新,我想知道,sma()包中是否有与smooth类似的功能,以适应我的时间加权移动平均线(WMA)意甲? 我想使用权重

来拟合WMA模型
weights <- (1/35)*c(-3, 12, 17, 12, -3)

我能够使用filter()函数计算WMA的值,但我希望得到与sma()函数类似的输出(包括残差,BIC,......)

Income <- c(44649, 47507, 49430, 51128, 54453, 58712, 60533, 
            63091, 63563, 62857, 62481, 63685, 65596)
Year <- c(2000, 2001, 2002, 2003, 2004, 2005, 2006, 
          2007, 2008, 2009, 2010, 2011, 2012)
df <- data.frame(Year, Income)

library(smooth)
# simple moving average model
(sma5_fit <- sma(df$Income, order = 5))

# weighted moving average
wma5 <- filter(df$Income, filter = (1/35)*c(-3, 12, 17, 12, -3), sides = 2)

欢迎任何建议!

修改 计算加权移动平均线的前2和后2值也是很好的。现在,我必须用以下代码手动计算它们(权重来自肯德尔的时间序列书):

n <- length(Income)
wma5[n-1] <- sum(1/35 * c(2, -8, 12, 27, 2) * c(Income[(n-4):(n)]))
wma5[n]   <- sum(1/70 * c(-1, 4, -6, 4, 69) * c(Income[(n-4):(n)]))
wma5[2]   <- sum(1/35 * c(2, 27, 12, -8, 2) * c(Income[1:5]))
wma5[1]   <- sum(1/70 * c(69, 4, -6, 4, -1) * c(Income[1:5]))

0 个答案:

没有答案