Uso de ~ (tilde) en el lenguaje de programación R
Vi en un tutorial sobre modelado 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 la función de ~
(tilde) en el comando?
Lo que está a la derecha de <-
es un formula
objeto. A menudo se utiliza para denotar un modelo estadístico, donde lo que está a la izquierda de ~
es la respuesta y lo que está a la derecha ~
son las variables explicativas. Entonces, en inglés dirías algo como "La especie depende de la longitud del sépalo, el ancho del sépalo, la longitud del pétalo y el ancho del pétalo" .
La myFormula <-
parte de esa línea almacena la fórmula en un objeto llamado myFormula
para que puedas usarla en otras partes de tu código R.
Otros usos comunes de los objetos de fórmula en R
El lattice
paquete los utiliza para especificar las variables a trazar .
El ggplot2
paquete los utiliza para especificar paneles para trazar .
El dplyr
paquete los utiliza para una 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 el más común sea el de regresión:
library(datasets)
lm( myFormula, data=iris)
help("~")
o help("formula")
te enseñará más.
@Spacedman ha cubierto los conceptos básicos. Analicemos cómo funciona.
Primero, al ser un operador, tenga en cuenta que es esencialmente un atajo a una función (con dos argumentos):
> `~`(lhs,rhs)
lhs ~ rhs
> lhs ~ rhs
lhs ~ rhs
Puede resultar útil saberlo para utilizarlo, por ejemplo, en apply
comandos familiares.
En segundo lugar, puedes manipular la fórmula como texto :
oldform <- as.character(myFormula) # Get components
myFormula <- as.formula( paste( oldform[2], "Sepal.Length", sep="~" ) )
En tercer lugar, puedes manipularlo como una lista :
myFormula[[2]]
myFormula[[3]]
Finalmente, hay algunos trucos útiles con fórmulas (consulte help("formula")
para obtener más información):
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 analiza el data.frame que utiliza en su eventual llamada al modelo, ve qué variables existen en el data.frame pero no se mencionan explícitamente en su fórmula y reemplaza el punto con esas variables que faltan.
En una palabra,
The tilde
(~) separates the left side of a formula with the right side of the formula.
Por ejemplo, en una función lineal, separaría la variable dependiente de las variables independientes y puede interpretarse como "en función de". Entonces, cuando los salarios (salarios) de una persona son una función de sus años de educación (años_de_educación), hacemos algo como,
wages ~ years_of_education
Aquí,
Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width
Es decir, Species
es una función de Sepal Length, Sepal Width, Petal Length and Petal Width
.