我在一个关于回归建模的教程中看到了以下命令:

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

这个命令到底做什么,~(波浪号)在命令中的作用是什么?


<-右边的是一个公式对象。它通常用来表示一个统计模型,其中~左边的东西是响应,~右边的东西是解释变量。所以在英语中,你会说“物种取决于萼片长度,萼片宽度,花瓣长度和花瓣宽度”。

该行的myFormula <-部分将公式存储在一个名为myFormula的对象中,以便您可以在R代码的其他部分使用它。


公式对象在R中的其他常用用法

格包使用它们来指定要绘制的变量。 ggplot2包使用它们来指定用于绘图的面板。 dplyr包将它们用于非标准评估。


R定义了公式中使用的~(波浪号)运算符。公式有各种各样的用途,但最常见的可能是用于回归:

library(datasets)
lm( myFormula, data=iris)

Help("~")或Help ("formula")会教你更多。

@Spacedman已经介绍了基本情况。让我们讨论一下它是如何工作的。

首先,作为一个操作符,注意它本质上是一个函数的快捷方式(有两个参数):

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

这对了解应用程序很有帮助,例如应用家族命令。

其次,您可以操作公式作为文本:

oldform <- as.character(myFormula) # Get components
myFormula <- as.formula( paste( oldform[2], "Sepal.Length", sep="~" ) )

第三,你可以把它作为一个列表来操作:

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

最后,还有一些有用的公式技巧(参见help(“公式”)了解更多):

myFormula <- Species ~ . 

例如,上面的版本与原始版本相同,因为圆点表示“所有尚未使用的变量”。这将查看您在最终的模型调用中使用的data.frame,查看在data.frame中存在但在公式中没有显式提到的变量,并用那些缺失的变量替换圆点。


总之

波浪号(~)分隔公式的左边和右边。

例如,在一个线性函数中,它将因变量从自变量中分离出来,可以解释为“作为的函数。”因此,当一个人的工资(工资)作为其受教育年限(years_of_education)的函数时,我们会这样做,

wages ~ years_of_education

在这里,

 Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width

这意味着,物种是一个函数的萼片长度,萼片宽度,花瓣长度和花瓣宽度。