Использование ~ (Тильда) в языке программирования R


Я видел в учебнике о регрессионном моделировании следующую команду:

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

что именно делает эта команда, и какова роль ~ (Тильда) в команде?

2   140   2013-02-20 13:27:57

2 ответа:

вещь справа от <- Это formula

R определяет a ~ (Тильда) оператора для использования в формулах. Формулы имеют все виды использования, но, возможно, наиболее распространенным является для регрессии:

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

help("~") или help("formula") научит вас больше.

@Spacedman осветил основы. Давайте обсудим, как это работает.

во-первых, будучи оператором, обратите внимание, что это по существу ярлык для функции (С двумя аргументами):

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

это может быть полезно знать для использования в например apply семейные команды.

во-вторых, вы можете манипулировать формулой текст:

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

в-третьих, вы можете манипулировать им в список:

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

наконец, есть несколько полезных трюков с формулами (см. help("formula") дополнительные):

myFormula <- Species ~ . 

например, приведенная выше версия совпадает с исходной версией, так как точка означает "все переменные еще не использованы.". Это посмотрит данные.фрейм, который вы используете в своем конечном вызове модели, видит, какие переменные существуют в данных.кадр, но явно не упоминается в вашей формуле и заменяет точку этими отсутствующими переменными.