web-dev-qa-db-fra.com

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?

167
Ankita

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 .

175
Spacedman

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.

78
Ari B. Friedman