我有一个“n”列和“k”行的矩阵(名为x)。我想做一个循环,但我不知道如何。
fit1=hw(x[,1],h=12)
fit2=hw(x[,2],h=12)
fit3=hw(x[,3],h=12)
fit4=hw(x[,4],h=12)
fit5=hw(x[,5],h=12)
.
.
.
fitn=hw(x[,n],h=12)
问题是,如果我没有为此循环,我将无法继续。更具体地说,我在一个项目中,我必须预测矩阵的数据。通过一些测试,我得出结论,我的数据的最佳方法是HoltsWinter。如果a只有一列,这很容易。
x<-read.table()
xx<-ts(x,start=,frequency=)
fit<-hw(xx,h=12,model="additive") or fit<-hw(xx,h=12,model="multiplicative")
fit$mean
and in final step a plot.
但在我的情况下,我没有一栏......但我有很多......所以不可能同时思考n次。我相信存在一个可以帮助我解决问题的循环。
答案 0 :(得分:2)
你应该调查apply
家庭。一些例子:
lapply()
用于计算每个系列(列)的平均值:
x <- data.frame( a =rnorm(100), b=rnorm(100), c=rnorm(100))
xx <- ts(x, start=2000, frequency=4)
lapply(x, mean)
$a
[1] 0.03697344
$b
[1] -0.1540831
$c
[1] -0.2267992
或sapply
与HoltWinters()
中的stats
一起使用{/ 1}}:
sapply(names(x), function(i,...) HoltWinters(xx[,i],...), seasonal = "additive" )
a b c
fitted Numeric,384 Numeric,384 Numeric,384
x Numeric,100 Numeric,100 Numeric,100
alpha 0.1388421 0.1657252 0.06299144
beta 0.08518182 0.1902871 0.2389817
gamma 0.1799012 0.2454659 0.1603644
coefficients Numeric,6 Numeric,6 Numeric,6
seasonal "additive" "additive" "additive"
SSE 112.2228 137.912 135.6189
call Expression Expression Expression
答案 1 :(得分:0)
fit=list()
for (i in 1:ncol(x)) {
fit[[i]]=hw(x[,i],h=12)
}