Je essaie de faire fonctionner plusieurs régressions multiples en même temps avec des formules légèrement différentes. J'ai trouvé un bon exemple ici : https://rpubs.com/Marcelobn/many_regressions
Cependant, je n'arrive pas tout à fait à faire fonctionner des formules différentes pour chaque régression... Je cherche de l'aide pour corriger mon code mis à jour ou fournir une méthode alternative. Merci d'avance !
J'utilise R Studio, et j'ai mis en évidence ce que j'ai déjà essayé ci-dessous (exemple2).
library(pwt)
library(dplyr)
library(tidyr)
library(purrr)
library(broom)
library(pander)
exemple <- pwt7.1
# Cela fonctionne très bien, et je veux toujours un résultat comme celui-ci :
croissance_multiple <- exemple %>% select(country, openc, cg, cgdp) %>%
na.omit() %>%
nest(-country) %>%
mutate(model = map(data, ~lm(cgdp ~ openc + cg, data = .)),
tidied = map(model, tidy)) %>%
unnest(tidied)
# MAIS : cela suppose que chacun des modèles pour chaque pays est le même
# Je veux spécifier des formules différentes pour chacun
exemple2 <- exemple
# Je les ai assignées de manière aléatoire à des fins d'exemple
# En réalité, j'y arrive de manière plus méthodique !
formule1 <- paste("cgdp", "~", "openc", "+", "cg", sep = " ")
formule2 <- paste("cgdp", "~", "openc", "+", "cg", "+", "currency", "+", "ppp", sep = " ")
formule3 <- paste("cgdp", "~", "pg", "+", "kg", "+", "openc", sep = " ")
randvar = sample(c(formule1,formule2,formule3), size = nrow(exemple2), replace = TRUE)
exemple2$regress = randvar
# Exécuter à nouveau le modèle avec une légère modification de lm, et cela fonctionne un peu
croissance_multiple_2 <- exemple2 %>% select(country, openc, cg, cgdp, currency, ppp, pg, kg, regress) %>%
na.omit() %>%
nest(-country, -regress) %>%
mutate(model = map(data, ~lm(as.formula(regress), data = .)), # c'est là que j'ai essayé de le changer
tidied = map(model, tidy)) %>%
unnest(tidied)
# Cela fonctionne un peu mais cela utilise la première formule pour TOUS les autres pays... Une idée pour corriger / une méthode alternative ?
Un résultat similaire est ce que je souhaiterais, mais avec les régressions utilisant la bonne formule pour chacune et pas seulement la première de la liste pour toutes...