Formel mit dynamischer Anzahl von Variablen
Nehme an, es gibt einige Daten.Rahmen foo_data_frame und man will zu finden regression der Spalte Ziel Y von einigen anderen Spalten. Für diesen Zweck in der Regel einige Formel und Modell verwendet. Zum Beispiel:
linear_model <- lm(Y ~ FACTOR_NAME_1 + FACTOR_NAME_2, foo_data_frame)
Dass tut gut, wenn die Formel codiert ist statisch. Wenn es erwünscht ist, die Wurzel über mehrere Modelle mit der Konstanten Anzahl der abhängigen Variablen (sagen wir 2) es können so behandelt werden:
for (i in seq_len(factor_number)) {
for (j in seq(i + 1, factor_number)) {
linear_model <- lm(Y ~ F1 + F2, list(Y=foo_data_frame$Y,
F1=foo_data_frame[[i]],
F2=foo_data_frame[[j]]))
# linear_model further analyzing...
}
}
Meine Frage ist, wie das gleiche zu tun beeinflussen, wenn die Anzahl der Variablen ändert sich dynamisch während das Programm läuft?
for (number_of_factors in seq_len(5)) {
# Then root over subsets with #number_of_factors cardinality.
for (factors_subset in all_subsets_with_fixed_cardinality) {
# Here I want to fit model with factors from factors_subset.
linear_model <- lm(Does R provide smth to write here?)
}
}
InformationsquelleAutor der Frage Max | 2011-02-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sehen
?as.formula
z.B.:wo
factors
ist ein character-Vektor mit den Namen der Faktoren, die Sie verwenden möchten, in das Modell. Dieses können Sie einfügen in einelm
Modell, z.B.:InformationsquelleAutor der Antwort Joris Meys
Eine oft vergessene Funktion ist
reformulate
. Von?reformulate
:Einem einfachen Beispiel:
ergibt diese Formel:
y ~ factor1 + factor2
Obwohl dies nicht explizit dokumentiert ist, können Sie auch hinzufügen, Interaktion Begriffe:
Ausbeute:
y ~ factor1 + factor2 + (factor3 + factor4)^2
InformationsquelleAutor der Antwort mnel
Weitere option könnte sein, verwenden Sie eine matrix, in der Formel:
InformationsquelleAutor der Antwort Sacha Epskamp
Braucht man eigentlich nicht eine Formel. Das funktioniert:
wie diese:
InformationsquelleAutor der Antwort G. Grothendieck
Ich in der Regel dieses Problem lösen, indem Sie den Namen meiner Spalte Antwort. Es ist leichter, dynamisch, und vielleicht sauberer.
InformationsquelleAutor der Antwort bibzzzz