Uso de ~ (tilde) en el lenguaje de progtwigción R

Vi en un tutorial sobre modelos de regresión el siguiente comando:

myFormula <- Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width 

¿Qué hace exactamente este comando y cuál es el papel de ~ (tilde) en el comando?

Lo que está a la derecha de < - es un objeto de formula . A menudo se usa para denotar un modelo estadístico, donde lo que está a la izquierda de ~ es la respuesta y las cosas a la derecha de ~ son las variables explicativas. Así que en inglés dirías algo así como "Las especies dependen de la longitud del sepal, el ancho del sepal, la longitud del pétalo y el ancho del pétalo" .

myFormula < - parte de esa línea almacena la fórmula en un objeto llamado myFormula para que pueda usarlo en otras partes de su código R.


Otros usos comunes de los objetos de fórmula en R

El paquete de lattice los usa para especificar las variables a trazar .
El paquete ggplot2 los usa para especificar paneles para el trazado .
El paquete dplyr los usa para la evaluación no estándar .

R define un operador ~ (tilde) para usar en fórmulas. Las fórmulas tienen todo tipo de usos, pero quizás la más común es la regresión:

 library(datasets) lm( myFormula, data=iris) 

help("~") o help("formula") le enseñará más.

@Spacedman ha cubierto los conceptos básicos. Vamos a discutir cómo funciona.

En primer lugar, al ser un operador, tenga en cuenta que se trata esencialmente de un acceso directo a una función (con dos argumentos):

 > `~`(lhs,rhs) lhs ~ rhs > lhs ~ rhs lhs ~ rhs 

Eso puede ser útil para saber para usar, por ejemplo, apply comandos de familia.

En segundo lugar, puede manipular la fórmula como texto :

 oldform < - as.character(myFormula) # Get components myFormula <- as.formula( paste( oldform[2], "Sepal.Length", sep="~" ) ) 

En tercer lugar, puede manipularlo como una lista :

 myFormula[[2]] myFormula[[3]] 

Finalmente, hay algunos trucos útiles con las fórmulas (ver help("formula") para más):

 myFormula < - Species ~ . 

Por ejemplo, la versión anterior es la misma que la versión original, ya que el punto significa "todas las variables aún no utilizadas". Esto mira el dataframe que utiliza en su llamada al modelo final, ve qué variables existen en el dataframe pero no se mencionan explícitamente en su fórmula, y reemplaza el punto con esas variables faltantes.