我有一组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次回归,对于3个变量进行20次回归,对4个变量进行15次回归。我希望尽可能高效地完成此操作,而无需手动输入51种不同的回归。
我是一个相对较新的R用户,因此我仍然在努力解决这些通用的编码技巧,从根本上加快我的分析速度。有人可以指出我正确的方向吗?
谢谢!
答案 0 :(得分:2)
您可以使用字符串操作功能构建运行中的所有公式,然后将这些公式转换为属性表格并应用于要运行的模型列表。例如
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))))
})