我尝试使用一些错误措施进行预测分析。我的问题更多地涉及技术问题。 这是一个简短的例子: 我正在研究关于预测长度(h)和k步预测的误差测量。我想比较12,18和24个月的预测长度。
h<-c(12,18,24)
对于这些长度,我比较了提前1-12步预测。
k <- c(1:12)
我写了两个函数: 第一个(foo)计算空洞代码,第二个(forecast_analysis)正在进行我的预测分析。
foo <- function(series, k, h){
Outfinal <- matrix(nrow = length(h)*length(k), ncol = 5)
for(i in 1:length(h)){
for(j in 1:length(k)){
Outfinal[j,] <- forecast_analysis(series,k[j],h[i])
}
}
return(Outfinal)
}
我的问题是,我无法通过这样的行找到填充Matrix的方法:
h k measure 1 measure 2 measure3 measure 4 measure 5
12 1
12 2
12 3
. .
. .
. .
24 10
24 11
24 12
所以,首先我要为所有k值填充矩阵的固定值h。然后对h的所有值重复此操作。我希望能够理解我的问题。
我知道应用函数在这里会更有效率。但我还没有能够这样做。
答案 0 :(得分:1)
您可以使用expand.grid
构建包含所有h x k组合的表格以及结果。
此代码可以帮助您入门
dummy_forecast <- function(h, k) 42
h<-c(12,18,24)
k <- 1:12 # no need for the c function here
combinations <- expand.grid(h = h, k = k, forecast = NA)
for (row in seq_along(combinations$h)) {
combinations[row, "forecast"] <-
with(combinations[row,], dummy_forecast(h, k))
}
如果您从函数中返回多个值,则需要在combinations[row,...]
中分配多个列,否则它应该有效。
<强>更新强>
要处理返回多个值的函数,请执行以下操作:
dummy_forecast <- function(h, k) rep(42, 5)
result <- matrix(nrow = length(h) * length(k), ncol = 7)
combinations <- expand.grid(h = h, k = k)
for (row in seq_along(combinations$h)) {
result[row,] <- with(combinations[row,], c(h, k, dummy_forecast(h, k)))
}