我在一篇关于回归建模的教程中看到了以下命令:
myFormula <- Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width
这个命令到底是做什么的,以及~
(代字号)在命令中的作用是什么?
答案 0 :(得分:171)
<-
右侧的内容是formula
对象。它通常用于表示统计模型,其中~
左侧的内容是响应,而~
右侧的内容是解释变量。所以在英语中你会说像“物种取决于萼片长度,萼片宽度,花瓣长度和花瓣宽度”。
该行的myFormula <-
部分将公式存储在名为myFormula
的对象中,以便您可以在R代码的其他部分中使用它。
R
中公式对象的其他常见用法 lattice
包将它们用于specify the variables to plot
ggplot2
包将它们用于specify panels for plotting
dplyr
包将它们用于non-standard evaulation。
答案 1 :(得分:76)
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中存在哪些变量但未在公式中明确提及,并将点替换为缺少的变量。
答案 2 :(得分:0)
一句话,
The tilde
(~) separates the left side of a formula with the right side of the formula.
例如,在线性函数中,它将因变量与自变量分开,可以解释为“作为...的函数”。因此,当一个人的工资 (wages) 作为其受教育年限 (years_of_education) 的函数时,我们会执行类似的操作,
wages ~ years_of_education
这里,
Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width
这意味着,Species
是 Sepal Length, Sepal Width, Petal Length and Petal Width
的函数。