Я видел в руководстве по моделированию регрессии следующую команду:
myFormula <- Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width
Что именно делает эта команда, и какова роль ~
(тильды) в команде?
Я видел в руководстве по моделированию регрессии следующую команду:
myFormula <- Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width
Что именно делает эта команда, и какова роль ~
(тильды) в команде?
Ответы:
Дело в правой части <-
является formula
объектом. Он часто используется для обозначения статистической модели, где слева от ~
ответа находится ответ, а справа ~
- объясняющие переменные. Таким образом, на английском языке вы бы сказали что-то вроде «Вид зависит от длины чашелистика, ширины чашечки, длины лепестка и ширины лепестка» .
myFormula <-
Часть этой строки сохраняет формулу в объекте называется , myFormula
так что вы можете использовать его в других частях R кода.
Другие распространенные виды использования формул в R
lattice
Пакет использует их , чтобы задать переменные для построения графика . Пакет использует их , чтобы указать панели для черчения . Пакет использует их для нестандартных evaulation .ggplot2
dplyr
lazyeval
виньетки дает хорошее представление о том, что такое формула
R определяет оператор ~
(тильда) для использования в формулах. Формулы имеют всевозможное применение, но, пожалуй, наиболее распространенным является регрессия:
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 ~ .
Например, приведенная выше версия совпадает с исходной версией, поскольку точка означает «все переменные, которые еще не используются». Он просматривает файл data.frame, который вы используете в своем возможном вызове модели, видит, какие переменные существуют в data.frame, но явно не упомянуты в вашей формуле, и заменяет точку этими отсутствующими переменными.
Species~.
, вид является единственной переменной, которая была использована. Следовательно, это зависит от каждой другой переменной в data.frame.
myFormula <- Species ~ .
. Когда точка все еще будет заменена переменными из data.frame? Не могли бы вы привести пример