我在时间序列中相当新,我想知道,sma()
包中是否有与smooth
类似的功能,以适应我的时间加权移动平均线(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]))