在同一函数中加入两个时间序列

Joining two time-series in same function

我正在尝试将两个函数结果合并为一个,并尝试在一列中获得结果。

我的代码

myfun <-function(x){
  fit <-Arima(x, order = c(1,1,1), seasonal = list(order = c(0,1,0), period = 52),include.mean=TRUE,
                        include.constant = FALSE, method = 'CSS')
    fit_a <- forecast(fit$fitted)
    fit_a <- data.frame(fit_a$fitted)
    colnames(fit_a)[1] <- "load"
    fit_a$load <- as.data.frame(fit_a$load)
    fit_b <- data.frame(forecast(fit,h=400))
    fit_b <- data.frame(fit_b$Point.Forecast)
    colnames(fit_b)[1] <- "load"
    fit_b$load <- as.data.frame(fit_b$load)
    return(rbind(fit_a,fit_b))
  }

我正在单独获取值,例如 return(fit_a)return(fit_b) 但是在执行 rbind() 时我不能因为单独的时间序列数据。 尝试过:c(fit_a,fit_b) 显示两个不同的 ts(确认我们有输出并且只是故障转移 rbind())。

有人可以帮助我,如何在同一个函数中提取拟合值和预测值。

提前致谢!

return 多个对象的一种方法是创建一个对象列表,然后 return 那个。在您的情况下,您可以在函数末尾使用它:

fit <- list(fit_a, fit_b)

return(fit)

然后您可以使用 fit[[1]]fit[[2]] 访问元素。

您还可以选择命名元素,以便您可以使用 $ 访问它们,如下所示:

fit <- list(fit_a = fit_a, fit_b = fit_b)

return(fit)

然后你可以使用fit$fit_afit$fit_b