220

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

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

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

4

3 回答 3

222

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

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


R中公式对象的其他常见用途

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

于 2013-02-20T09:35:03.090 回答
89

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 中存在哪些变量,但您的公式中没有明确提及,并用那些缺失的变量替换点。

于 2013-02-20T11:34:29.147 回答
6

一句话,

The tilde(~) separates the left side of a formula with the right side of the formula.

例如,在线性函数中,它将因变量与自变量分开,可以解释为“作为函数”。所以,当一个人的工资(工资)作为他们受教育年限(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

于 2021-03-21T04:22:40.960 回答