Le nombre de lignes sans NA pour la colonne de nom 'nom' peut s'écritre
df.resultat[nom,"N"] <- sum( !is.na( fleurs[,nom]))
Si on fait
lm( y ~ x1 + x2, donnees)
l'analyse ne se fera que sur les lignes complètes, c'est-à-dire celle pour lesquelles il n'y a ni NA dans la colonne y, ni dans la colonne x1, ni dans la colonne x2. Donc, par exemple si x1 est la plante et x2, l'année, l'analyse ne prendra pas en compte les tulipes.
La recherche des prédicteurs les plus influents se fait en dehors de la boucle. Une solution est d'utiliser la fonction step en partant du modèle nul :
1 2 3 4
| upper <- formula( paste0( " ~ ", paste( nom[-1], collapse=" + ")))
nul <- formula( paste( nom[1], " ~ 1"))
res <- step( lm( nul, fleurs), scope=list( upper=upper))
anova( res) |
L'ordre de la formule donnera l'ordre des influences des prédicteurs et le résultat de anova, donnera ce qu'ajoute chacun des prédicteurs à l'ajustement par rapport aux précédents déjà introduits dans la formule. Cependant, étant donné que des lignes sont incomplètes, à chaque étape l'analyse risque de ne pas être fait sur le même jeu de données (cf. ma remarque précédente), ce qui rend cette estimation de l'influence des prédicteurs discutable.
Autres remarques :
- pourquoi utiliser un modèle sans interaction, ce qui revient à dire par exemple que le lieu ou l'humidité a la même influence sur toutes les plantes
- certains prédicteurs devraient être fortement corrélés entre eux, ce qu'il faut vérifier ; en effet, on peut penser que lieu et humidité (et température) sont très liés entre eux. L'utilisation dans une analyse de prédicteurs fortement corrélées fausse l'analyse.
Partager