J'ai vu dans un tutoriel sur la modélisation de régression la commande suivante:
myFormula <- Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width
Que fait exactement cette commande et quel est le rôle de ~
(tilde) dans la commande?
La chose à droite de <-
est un objet formula
. Il est souvent utilisé pour désigner un modèle statistique, où la chose à gauche du ~
est la réponse et les choses à la droite du ~
sont les variables explicatives. Ainsi, en anglais, vous diriez quelque chose comme "L’espèce dépend de la longueur du sépale, de la largeur du sépale, de la longueur du pétale et de la largeur du pétale" .
La partie myFormula <-
de cette ligne stocke la formule dans un objet appelé myFormula
afin que vous puissiez l'utiliser dans d'autres parties de votre code R.
Autres utilisations courantes des objets de formule dans R
Le package lattice
les utilise pour spécifier les variables à tracer .
Le package ggplot2
les utilise pour spécifier des panneaux pour le traçage .
Le paquetage dplyr
les utilise pour évaluation non standard .
R définit un opérateur ~
(tilde) à utiliser dans les formules. Les formules ont toutes sortes d'utilisations, mais la plus courante est peut-être la régression:
library(datasets)
lm( myFormula, data=iris)
help("~")
ou help("formula")
vous en apprendra plus.
@Spacedman a couvert les bases. Discutons comment cela fonctionne.
Premièrement, étant un opérateur, notez qu'il s'agit essentiellement d'un raccourci vers une fonction (avec deux arguments):
> `~`(lhs,rhs)
lhs ~ rhs
> lhs ~ rhs
lhs ~ rhs
Cela peut être utile de savoir pour une utilisation dans, par exemple. apply
commandes de famille.
Deuxièmement, vous pouvez manipuler la formule sous forme de texte:
oldform <- as.character(myFormula) # Get components
myFormula <- as.formula( paste( oldform[2], "Sepal.Length", sep="~" ) )
Troisièmement, vous pouvez le manipuler sous forme de liste:
myFormula[[2]]
myFormula[[3]]
Enfin, il existe quelques astuces utiles avec les formules (voir help("formula")
pour plus):
myFormula <- Species ~ .
Par exemple, la version ci-dessus est identique à la version d'origine, car le point signifie "toutes les variables non encore utilisées". Cela examine le fichier data.frame que vous utilisez dans votre appel de modèle éventuel, identifie les variables présentes dans le fichier data.frame mais qui ne sont pas explicitement mentionnées dans votre formule, et remplace le point par ces variables manquantes.