【问题标题】:Using combinations of principal components in a regression model在回归模型中使用主成分的组合
【发布时间】:2014-12-17 15:26:49
【问题描述】:

我有一组 51 个变量,我在其中应用了主成分分析,并根据 Kaiser-Guttman 标准选择了六个因子。我正在使用 R 进行分析,并使用以下函数执行此操作:
prca.searchwords <- prcomp(searchwords.ts, scale=TRUE) summary(prca.searchwords) prca.searchwords$sdev^2

接下来,我想在动态线性回归模型中使用这六个提取因子作为一、二、三和四组的解释变量,并选择能够解释因变量大部分变化的回归模型。六个变量是prca.searchwords$x[,1] + prca.searchwords$x[,2] + prca.searchwords$x[,3] + prca.searchwords$x[,4] + prca.searchwords$x[,5] + prca.searchwords$x[,6]

我在回归之前将其转换为时间序列:
prca.searchwords.1.ts <- ts(data=prca.searchwords$x[,1], freq=12, start=c(2004, 1)) prca.searchwords.2.ts <- ts(data=prca.searchwords$x[,2], freq=12, start=c(2004, 1))

为此,我使用 R 中的 dynlm 包(我选择使用动态回归,因为我执行的其他回归需要自变量的滞后值)。

例如,使用前两个因素,它看起来像这样:
private.consumption.searchwords.dynlm <- dynlm(monthly.privateconsumption.ts ~ prca.searchwords.1.ts + prca.searchwords.2.ts) summary(private.consumption.searchwords.dynlm)

我面临的问题是,我想对我选择使用的这六个因素中的一、二、三和四因素的所有可能组合执行此操作。这意味着我必须对 1 个变量组进行 6 次回归,对两个变量进行 15 个回归,对三个变量进行 20 个回归,对四个变量进行 15 个回归。我想尽可能高效地做到这一点,而不必手动输入 51 种不同的回归。

我是一个相对较新的 R 用户,因此我仍然在努力使用这些可以从根本上加快分析速度的通用编码技巧。有人可以指出我正确的方向吗?

谢谢!

【问题讨论】:

    标签: r regression pca


    【解决方案1】:

    您可以使用字符串操作函数构建您在运行时感兴趣的所有公式,然后将它们转换为属性公式并应用于您要运行的模型列表。例如

    vars <- paste0("prca.searchwords.",1:6,".ts")
    
    resp <- unlist(lapply(1:6, function(i) apply(combn(vars,i), 2, paste, collapse=" + ")))
    
    result <- lapply(resp, function(r) {
        do.call("dynlm", list(as.formula(paste0("monthly.privateconsumption.ts ~ ", r))))
    })
    

    【讨论】:

      猜你喜欢
      • 2010-12-20
      • 1970-01-01
      • 1970-01-01
      • 2018-12-15
      • 2020-12-22
      • 2016-09-03
      • 2019-05-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多