我有一个12个预测变量的数据框和一个名为BEI的数字列表(我想预测) . 我想对每12行数据进行逐步选择,例如1:12,2:13等 . 对于每次滚动,我想返回系数并使用系数来预测BEI . 以下是我的代码:
k = length(BEI)
coef.list <- numeric()
predicted.list <- numeric()
for(i in 1:(k-11)){
BEI.subset <- BEI[i:(i+11)]
predictors.subset <- predictors[c(i:(i+11)),]
fit.stepwise <- regsubsets(BEI.subset~., data = predictors.subset, nvmax = 10, method = "forward")
fit.summary <- summary(fit.stepwise)
id <- which.min(fit.summary$cp)
coefficients <- coef(fit.stepwise,id)
coef.list <- append(coef.list, coefficients)
form <- as.formula(fit.stepwise$call[[2]])
mat <- model.matrix(form,predictors.subset)
predicted.stepwise <- mat[,names(coefficients)]%*%coefficients
predicted.list <- append(predicted.list, predicted.stepwise)
}
我得到了这样的错误:重新排序变量并再次尝试:有50个或更多警告(使用warnings()查看前50个)
警告是:1:在leaps.setup(x,y,wt = wt,nbest = nbest,nvmax = nvmax,...:找到1个线性依赖关系2:在leaps.setup(x,y,wt = wt, nbest = nbest,nvmax = nvmax,...:找到1个线性相关性3:在leaps.setup中(x,y,wt = wt,nbest = nbest,nvmax = nvmax,...:找到1个线性相关性...等等
我该如何解决?或者这是编写代码的更好方法吗?
1 回答
您遇到错误的原因是滚动数据子集的缺失值(NA) .
以数据(瑞士)为例:
如果您要使用这些data.frames运行regsubsets,那么会出现错误,其中预测变量比情况多 .
相反,我只能保留12行的子集并继续进行回归,如下所示: