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?
Réponses:
La chose à droite
<-
est unformula
objet. Il est souvent utilisé pour désigner un modèle statistique, où l'élément à gauche de~
est la réponse et les éléments à droite de~
sont les variables explicatives. Donc, 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
myFormula <-
partie 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 formule dans R
Le
lattice
package les utilise pour spécifier les variables à tracer .Le
ggplot2
package les utilise pour spécifier des panneaux à tracer .Le
dplyr
package les utilise pour une évacuation non standard .la source
lazyeval
vignette donne une bonne introduction à ce qu'est une formuleR 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("~")
ouhelp("formula")
vous en apprendra plus.@Spacedman a couvert les bases. Voyons 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):
Cela peut être utile à savoir pour une utilisation par exemple dans
apply
les commandes familiales.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 des formules (voir
help("formula")
pour plus d'informations):Par exemple, la version ci-dessus est la même que la version originale, puisque le point signifie «toutes les variables non encore utilisées». Cela examine le data.frame que vous utilisez dans votre appel de modèle éventuel, voit quelles variables existent dans le data.frame mais ne sont pas explicitement mentionnées dans votre formule, et remplace le point par ces variables manquantes.
la source
Species~.
, l'espèce est la seule variable qui a été utilisée. Par conséquent, cela dépend de toutes les autres variables du data.frame.myFormula <- Species ~ .
. Quand dot encore être remplacé par des variables de data.frame? Pourriez-vous donner un exemple