Ich habe einen Datenrahmen mit 20 plus Spalten, und für jede dieser Spalten möchte ich ein glm-Modell, das ich dann erstellen auf dem gleichen Testset evaluieren. Hier ist mein Versuch:Schleife durch einen Datenrahmen und erstellen Sie ein Modell für jede Spalte, die auf dem gleichen Testsatz ausgewertet wird
# Train-test splitting
smp_size <- floor(0.70 * nrow(x))
index <- sample(seq_len(nrow(x)),size = smp_size)
train <- x[index, ]
test <- x[-index, ]
for (i in 1:22) {
names(train)[names(train) == names(train[i])] <- 'variab'
names(test)[names(test) == names(test[i])] <- 'variab'
mod <- glm(Y ~ variab, family = binomial, data = train)
assign(paste0("val", sep = "_", letters[i]), as.numeric(performance(
prediction(predict(mod, newdata = test, type = "response"),test$Y),
measure = "auc")@y.values[[1]]))
}
Allerdings funktioniert das nicht, es weist nur den Namen „variab“ zu jeder Spalte und endet das gleiche Modell für jede Spalte ausgeführt wird. Wie kann ich diese Schleife durch jede Spalte im Datenrahmen iterieren lassen?
Vielen Dank für Ihre Antwort! Die einzige Sache ist, dass, wenn ich Ihren Code ausführen, bekomme ich die folgende Fehlermeldung: "Warnmeldungen: 1: In Eval (Familie $ initialisieren): Nicht-Integer # Success in einem Binom Glm! 2: 'Newdata' hatte 45 Zeilen, aber gefundene Variablen haben 105 Zeilen "Ist das normal? –
Das kommt von dem Befehl: 'Vorhersage (Objekt = mod, newdata = Test, Typ =" Antwort ")'. Es scheint tatsächlich, dass aus irgendeinem Grund vorhersagen nicht Test verwendet wird, sondern für das newdata Argument trainieren, trotz eines expliziten Arguments anders. Ich habe das vorher nicht gesehen, aber ich werde es lösen und meinen Beitrag bearbeiten. – Nate
Die aktualisierte Antwort behebt das Problem und funktioniert ordnungsgemäß. Beachten Sie, dass die assign-Anweisung in der Schleife geändert wurde, um bessere Ergebnisse zu erzielen, da ich nicht Ihre ursprünglichen 'performance()' - oder 'precision()' -Funktionen verwende. Sie sollten in Ihrem Beispiel kein Problem mit der Warnung 'Nicht ganzzahlige Erfolge' haben, da Ihre Daten wahrscheinlich tatsächlich Binärdaten sind (ich habe schlechte Beispieldaten gewählt). – Nate