У підручнику про регресійне моделювання я побачив наступну команду:
myFormula <- Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width
Що саме робить ця команда і яка роль ~
(tilde) у команді?
У підручнику про регресійне моделювання я побачив наступну команду:
myFormula <- Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width
Що саме робить ця команда і яка роль ~
(tilde) у команді?
Відповіді:
Справа праворуч <-
- це 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.fram, який ви використовуєте в своєму кінцевому виклику моделі, бачить, які змінні існують у data.frame, але вони чітко не згадуються у вашій формулі, і замінює крапку тими відсутніми змінними.
Species~.
, вид - єдина змінна, яка була використана. Отже, це залежить від кожної іншої змінної у data.frame.
myFormula <- Species ~ .
. Коли крапка все-таки буде замінена змінними з data.frame? Чи можете ви навести приклад