Ich habe einen Datenrahmen von 12 Prädiktoren und eine Liste von Zahlen namens BEI (die ich vorherzusagen möchte). Ich möchte schrittweise Auswahl auf jeder 12 Zeilen von Daten, zum Beispiel 1:12, 2:13 und usw. ausführen. Für jedes Rollen, möchte ich die Koeffizienten zurückgeben und die Koeffizienten verwenden, um BEI vorherzusagen. Unten ist mein Code:Rolling schrittweise Regression in R
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)
}
und ich bekam die Fehler wie folgt aus: Neuordnen Variablen und es erneut versuchen: 50 Es waren oder mehrere Warnungen (Verwendung Warnungen(), um die ersten 50 zu sehen)
die Warnungen sind: 1: In sprüngen.setup (x, y, wt = wt, nbest = nbest, nvmax = nvmax, ...: 1 lineare Abhängigkeiten gefunden 2: In sprüngen.setup (x, y, wt = wt, nbest = nbest, nvmax = nvmax, ...: 1 lineare Abhängigkeiten gefunden 3: In sprüngen.setup (x, y, wt = wt, nbest = nbest, nvmax = nvmax, ...: 1 lineare Abhängigkeiten gefunden .... usw.
Wie behebe ich das? Oder ist das ein besserer Weg, die Codes zu schreiben?