Je essaie de stocker plusieurs objets lm dans une seule liste. Par exemple, j'ajuste 3 régressions polynomiales simples d'ordre 1, 2, 3 et les ajoute à une liste à travers une boucle for.
lm_results <- list()
for (i in 1:3){
lm_results[[i]] <- lm(mpg~poly(horsepower, i),
data=Auto)
}
Il doit y avoir quelque chose qui ne va pas dans ce que je fais, car la fonction predict()
ne fonctionne que sur le dernier objet de la liste, c'est-à-dire lm_results[[3]]
Pour lm_results[[1]]
, j'obtiens une erreur et un avertissement:
predict(lm_results[[1]], Auto)
Error: variable 'poly(horsepower, i)' a été ajustée avec le type "nmatrix.2" mais le
type "nmatrix.3" a été fourni
En plus: Warning message:
Dans Z/rep(sqrt(norm2[-1L]), each = length(x)) :
longer object length is not a multiple of shorter object length
Pour lm_results[[2]]
, seul l'avertissement s'affiche:
predict(lm_results[[2]], Auto)
Error: variable 'poly(horsepower, i)' a été ajustée avec le type "nmatrix.1" mais le
type "nmatrix.3" a été fourni
La chose la plus étrange est que si je fais la même chose "manuellement" (voir ci-dessous), tout fonctionne correctement.
lm_results <- list()
lm_results[[1]] <- lm(mpg~poly(horsepower, 1),
data=Auto)
lm_results[[2]] <- lm(mpg~poly(horsepower, 2),
data=Auto)
lm_results[[3]] <- lm(mpg~poly(horsepower, 3),
data=Auto)
Avez-vous une idée de quel pourrait être le problème?
Merci d'avance.