Nachdem ich mehr in den Tidyverse gelesen hatte, begann ich mit der Anpassung vieler linearer Modelle auf einmal, wie in this beschrieben. Das heißt, würde ich etwas in diese Richtung tun:dplyr und tidyr - Berechnen vieler linearer Modelle auf einmal mit den Faktoren
library(dplyr)
library(tidyr)
library(purrr)
df <- data.frame(y = rnorm(10),
x1 = runif(10),
x2 = runif(10))
df %>%
gather(covariate, value, x1:x2) %>%
group_by(covariate) %>%
nest() %>%
mutate(model = map(.x = data , .f = ~lm(y ~ value, data = .))) %>%
mutate(rsquared = map_dbl(.x = model, .f = ~summary(.)$r.squared))
Das Problem ist, dass dieser Ansatz schlägt fehl, wenn die Variablen nicht vom gleichen Typ sind, zum Beispiel, wenn ein numerischen ist und man ist ein Faktor, da die gather()
Funktion wird den gesamten value
Vektor in einen Faktor zwingen. Zum Beispiel
df <- data.frame(y = rnorm(10),
x1 = runif(10),
x3 = sample(c("a", "b", "c"), 10, replace = TRUE))
df %>%
gather(covariate, value, x1:x3) %>%
sapply(class)
wird durch die Warnung gefolgt
Warning message:
attributes are not identical across measure variables; they will be dropped
y covariate value
"numeric" "character" "character"
und die value
Spalte ist ein Zeichen, so dass der Trick mit nest()
funktioniert nicht mehr, da alle Kovariaten als Faktoren setzen in werden .
Ich frage mich, ob es eine ordentliche Weise, dies zu tun ist.
Kluger Ansatz. +1 –
Wird scheitern, wenn Sie zufällig numerische Variablen haben, die dennoch als Faktoren behandelt werden sollen (vielleicht keine gute Idee, aber es passiert viel). 'Sammeln' wird unweigerlich (?) verlieren einige Informationen ... –