【问题标题】:Is there an R function to fit an ARIMAX model for all possible combinations of my exogenous variables?是否有一个 R 函数可以为我的外生变量的所有可能组合拟合 ARIMAX 模型?
【发布时间】:2020-12-30 20:35:42
【问题描述】:

我正在尝试使用 7 个不同的外生变量时间序列(迁移、出生率、预期寿命......)来拟合 ARIMAX 模型来描述和预测人口规模时间序列的发展。 使用以下代码,您可以获得以迁移为外生变量的 ARIMAX 模型的结果:

auto.arima(population, xreg=migration)

也可以使用所有外生变量获得 ARIMAX 模型的结果:

reg_matrix<-cbind(migration,LEmale0,LEfemale0,LEmale65,LEfemale65,birthage,birthrate)
auto.arima(population, xreg=reg_matrix)

我想为所有可能的外生变量组合获得 ARIMAX 模型的结果。显然,我可以为所有可能的组合执行所描述的步骤。但由于有 7 个外生变量,因此有 5040 种不同的可能性(7 * 6 * 5 * 4 * 3 * 2 * 1),这需要很长时间,我不敢相信没有更快的方法来做到这一点。

我是 R 新手,非常感谢您的帮助!提前非常感谢!

【问题讨论】:

    标签: r statistics time-series combinations arima


    【解决方案1】:

    我对@9​​87654321@ 不太熟悉,而且您没有提供足够的数据示例来完全处理,但这可能会有所帮助。 假设变量顺序无关紧要(可能在 arima 中)。唯一组合的数量只有 127 个。您可以生成它们的列表以逐个提供给auto.arima,如下所示

    library(DescTools)
    library(purrr)
    
    variables <- c("migration", "LEmale0", "LEfemale0", "LEmale65", "LEfemale65", "birthage", "birthrate")
    
    combo_list <- list()
    for (i in 1:length(variables)) {
       combo_list[[i]] <- DescTools::CombSet(variables, i, 
                                             repl = FALSE, 
                                             ord = FALSE, 
                                             as.list = TRUE)
    }
    
    combo_list <- purrr::flatten(combo_list)
    length(combo_list)
    #> [1] 127
    
    # various points in the list
    
    combo_list[[1]]
    #> [1] "migration"
    combo_list[[34]]
    #> [1] "migration" "LEfemale0" "LEmale65"
    combo_list[[127]]
    #> [1] "migration"  "LEmale0"    "LEfemale0"  "LEmale65"   "LEfemale65"
    #> [6] "birthage"   "birthrate"
    

    【讨论】:

    • 感谢您的回答!你是对的,因为可变顺序无关紧要,只有 127 个独特的组合!按照您的回答中的建议创建列表后,我遇到以下问题,这就是我仍然无法自动运行所有计算的原因:变量名称在列表中存储为“字符串”,但我需要将它们存储作为变量。因为否则我不能喂它们 auto.arima 因为出现以下错误消息: auto.arima(population, xreg = combo_list[1]) 中的错误:xreg 应该是数字矩阵或数字向量
    • 能分享一下dput(head(population, 30))dput(head(migration, 30))
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-19
    • 2018-07-01
    • 1970-01-01
    • 2020-03-12
    • 2010-12-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多