Je suis en train de lire le R for Data Science de Hadley Wickham et j'ai rencontré les exercices de 23.2.1, traitant de la robustesse des modèles linéaires qui étaient équipés de carrés différences par rapport aux ensembles de données générés aléatoirement.Comment ajuster des modèles linéaires à plusieurs ensembles de données générés aléatoirement en utilisant le tidyverse
J'ai essayé de l'implémenter en utilisant les paquets tidyverse.
generate_data <- function(seed){
set.seed(seed)
tibble(
x = rep(1:10, each = 3),
y = x * 1.5 + 6 + rt(length(x), df = 2),
seed = as.character(seed)
)
}
seeds <- 6:11
datasets <- seeds %>%
map(generate_data)
Ceci est le point crucial. Les ensembles de données existent dans une liste de données, j'ai donc utilisé la fonction map
, pour finalement extraire les coefficients du modèle respectif avec coef
. Dans ce processus, cependant, je perds l'information sur la graine qui a été utilisée et, par conséquent, le lien vers l'ensemble de données auquel il se réfère, ce qui me force à faire la chose moche mutate(seed = as.character(seeds))
.
Convertir la liste des dataframes en un seul pour le traçage:
datasets <- datasets %>% map_df(bind_rows)
ggplot(datasets,
aes(x,y, col = seed)
) +
geom_jitter(width = .1) +
geom_abline(
data = model_parameters,
aes(
intercept = `(Intercept)`,
slope = x,
color = seed
)
)
Ma solution semble un peu laid. Y a-t-il une approche plus naturelle à cela?
Great, merci beaucoup! Je n'étais pas au courant de la fonction 'do' – telegott