Utilisation de ~ (tilde) dans le langage de programmation R
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?
2 réponses
La chose sur le droit de <-
est un formula
objet. Il est souvent utilisé pour désigner un modèle statistique, où la chose à gauche du ~
est la réponse et les choses à droite du ~
sont les variables explicatives. Donc, en anglais, vous diriez quelque chose comme "L'espèce dépend de la longueur des sépales, de la largeur des sépales, de la longueur des pétales et de la largeur des pétales".
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 R code.
Autres utilisations courantes des objets de formule dans R
Le paquet lattice
les utilise pour spécifier les variables à tracer.
Le paquet ggplot2
les utilise pour spécifier des panneaux pour tracer .
Le paquet dplyr
les utilise pour evaulation non standard .
R définit un opérateur ~
(tilde) à utiliser dans les formules. Les formules ont toutes sortes d'utilisations, mais peut-être le plus commun est pour la régression:
library(datasets)
lm( myFormula, data=iris)
help("~")
ou {[7] } vous apprendra plus.
@Spacedman a couvert les bases. Discutons comment cela fonctionne.
Tout d'abord, é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
Qui peut être utile à savoir pour une utilisation dans par exemple apply
famille commande.
Ensuite, vous pouvez manipuler la formule texte:
oldform <- as.character(myFormula) # Get components
myFormula <- as.formula( paste( oldform[2], "Sepal.Length", sep="~" ) )
Troisième, vous pouvez le manipuler , comme une liste:
myFormula[[2]]
myFormula[[3]]
Enfin, il y a quelques astuces utiles avec des formules (voir help("formula")
pour plus d'Informations):
myFormula <- Species ~ .
Par exemple, la version ci-dessus est la même que la version originale, puisque le point signifie "toutes les variables non encore utilisé.". Cela ressemble à des données.frame que vous utilisez dans votre appel de modèle éventuel, voit quelles variables existent dans le données.frame mais ne sont pas explicitement mentionnés dans votre formule, et remplace le point par ces variables manquantes.