我需要有R代码的第一部分是关于:
写一个执行以下操作的R函数:给定N的序列xN =(x1; x2; ...; xN) 观察,该函数返回移动平均线的向量,其中计算每个平均值 连续观察k次。将函数命名为ma,其参数为 向量xN和k。
到目前为止我所拥有的:
x <-vector(length=n)
ma <- function(x,k){
x0 <- x[1:(length(x)-k)]
x1 <- x[(1+k):length(x)]
cor(x0, x1)
}
我很确定我犯了错误......
答案 0 :(得分:3)
有很多方法可以计算移动平均线。
在基础r中,这可以工作
filter(x, rep(1/2,2)) #this calculates moving average of 2 numbers in a sequence
filter(x, rep(1/3,3)) #this calculates moving average of 3 numbers in a sequence
连续k次观察
filter(x, rep(1/k,k))
e.g。
x <- c(3,5,7,3,4,2,6,4,7,2,1,9, 1, 10, 1,12)
filter(x, rep(1/2,2))
# [1] 4.0 6.0 5.0 3.5 3.0 4.0 5.0 5.5 4.5 1.5 5.0 5.0 5.5 5.5 6.5 NA
您还应该查看以下软件包:zoo
和TTR
软件包以获取更多选项
正如一个简单的例子,TTR中的函数runMean
非常简单
runMean(x,2) #gives rolling mean of every 2 consecutive observations
runMean(x,k) #gives rolling mean of every k consecutive observations