从 auto.arima 中提取系数而不截取

extract coefficient from auto.arima without intercept

我想从我用 auto.arima 创建的几个模型中提取 AR 系数。问题是我想取 AR 系数的总和但没有 intercept/mean。

bsp_ts <- ts(c(1,2,1,2,3,2,3,2,4,3,4,3,4,5,4,3,5,6,5,4,5,6,7,6))
bsp_auto <- auto.arima(bsp_ts, max.p = 12, max.q = 0, seasonal = FALSE, d=0)
summary(bsp_auto)
sum(coef(bsp_auto))

如何才能只访问 AR 系数?我知道系数保存在 auto.arima 的列表中,因此我认为解决方案是使用相应的 "list language" 访问系数,但我对列表仍然没有经验。有人可以帮忙吗? :) 提前致谢...

编辑:多个模型

bsp1_ts <- ts(c(1,2,1,2,3,2,3,2,4,3,4,3,4,5,4,3,5,6,5,4,5,6,7,6))
bsp2_ts <- ts(c(1,2,1,2,3,2,3,2,4,3,4,3,4,5,4,3,5,6,5,4,5,6,7,6))
bsp3_ts <- ts(c(1,2,1,2,3,2,3,2,4,3,4,3,4,5,4,3,5,6,5,4,5,6,7,6))

bsp_ts <- list(bsp1_ts, bsp2_ts, bsp3_ts) 

bsp_auto <- lapply(bsp_ts, function(x) auto.arima(x, max.p = 12, max.q = 0, seasonal = FALSE, d=0))

多个模型的系数提取,像这样:

ARcoef_li <- lapply(ARpers_li, function(x) sum(ARpers_li$x$coef)

单一模型

library(forecast)
bsp_ts <- ts(c(1,2,1,2,3,2,3,2,4,3,4,3,4,5,4,3,5,6,5,4,5,6,7,6))
bsp_auto <- auto.arima(bsp_ts, max.p = 12, max.q = 0, seasonal = FALSE, d=0)

你可以这样做:

my_coefficients = bsp_auto$coef
my_coefficients[!names(my_coefficients) == 'intercept']

请注意,当您键入 bsp_auto$ 时,RStudio 将为您提供有关从模型中提取的可用对象的建议。这些信息可能会在将来帮助您完成类似的任务。 bsp_auto$coef returns 命名向量:

      ar1 intercept 
0.7877316 3.6909753 

所以我回答中的第二行用于 'discard' 我们矢量中的 intercept

希望对您有所帮助!


多个模型

bsp1_ts <- ts(c(1,2,1,2,3,2,3,2,4,3,4,3,4,5,4,3,5,6,5,4,5,6,7,6))
bsp2_ts <- ts(c(1,2,1,2,3,2,3,2,4,3,4,3,4,5,4,3,5,6,5,4,5,6,7,6))
bsp3_ts <- ts(c(1,2,1,2,3,2,3,2,4,3,4,3,4,5,4,3,5,6,5,4,5,6,7,6))

bsp_ts <- list(bsp1_ts, bsp2_ts, bsp3_ts) 

bsp_auto <- lapply(bsp_ts, function(x) auto.arima(x, max.p = 12, max.q = 0, seasonal = FALSE, d=0))

lapply(bsp_auto,function(x){ x$coef[!names(x$coef)=='intercept']} )