У підручнику про регресійне моделювання я побачив наступну команду:
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 .ggplot2dplyr
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? Чи можете ви навести приклад