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?

140
demandé sur Ari B. Friedman 2013-02-20 13:27:57

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 latticeles 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 .

156
répondu Spacedman 2017-11-03 13:10:06

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.

66
répondu Ari B. Friedman 2013-02-20 13:03:16