Date Редакция Категория comp Теги R

В руководствах по классификации нередко можно встретить подобные команды:

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

(пример взят из популярного набора данных iris).

Что означает эта "тильда" и команда в целом?

Выражение в правой части от оператора присваивания -- это формула. Формулы нужны для описания статистических моделей. Справа от ~ в формуле располагаются независимые переменные (предикторы), слева -- зависимая величина (отклик). Таким образом, приведенная выше формула звучит по-русски примерно так: "Вид (Species) зависит от длины чашелистика (Sepal Length), ширины чашелистика (Sepal Width), длины лепестка (Petal Length) и ширины лепестка (Petal Width)".

Наконец, myFormula -- это переменная, в которой сохраняется объект класса формула, так что его можно использовать далее в скрипте.

Тильда ~ представляет собой бинарный оператор, который также можно записать в виде функции двух переменных:

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

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

С формулой можно обращаться как с текстом:

# Получить компоненты формулы в текстовом виде
oldform <- as.character(myFormula)
# Создать из них новую формулу
myFormula <- as.formula( paste( oldform[2], "Sepal.Length", sep = "~" ) )

С формулой можно обращаться как со списком:

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

Формулы допускают сокращённую запись. Например, следующая формула

myFormula <- Species ~ .

обозначает в точности то же самое, что и самая первая из записанных здесь. Точка '.' означает: "все переменные, которые ещё не использовались". В нашем случае это все колонки таблицы, кроме Species.



Комментарии

comments powered by Disqus