我有一组51个变量,对其进行了主成分分析,并根据Kaiser准则选择了六个因素。我使用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)
我面临的问题是,我想对我所选择使用的六种因素中的一、二、三和四因素的所有可能组合进行这样的处理。这意味着我必须对一个变量组进行六次回归,对两个变量进行15次回归,对三个变量进行20次回归,对四个变量进行15次回归。我希望尽可能高效地这样做,而不必手动输入51种不同的回归。
我是一个相对较新的R用户,因此,我仍然挣扎于这些通用的编码技巧,这将极大地加快我的分析速度。谁能帮我指出正确的方向吗?
谢谢!
发布于 2014-10-22 17:40:49
您可以使用字符串操作函数构建运行过程中遇到的所有公式,然后将这些公式转换为属性形式,并应用于要运行的模型列表。例如
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))))
})https://stackoverflow.com/questions/26503059
复制相似问题