1

R中的Y~X和Y~X+1有什么区别?

4

2 回答 2

7

在 的上下文中lm(),它们完全相同。两种模型都包括截距。

要删除截距,您可以编写Y ~ X - 1or Y ~ X + 0

于 2013-04-06T14:23:42.220 回答
5

你的问题的背景是什么?

如前所述,inlm和其他在内部使用的函数model.matrix是相同的。但在其他情况下它们有所不同,请考虑以下代码:

plot.new()
text( .5, .1, y ~ x )
text( .5, .3, y ~ x + 1 )

在这里它们是不同的(并且运行代码显示了差异)。

对于任何其他功能或上下文,它将取决于实现。

这 2 行给出了相同的结果:

plot( Petal.Length ~ Species, data=iris )
plot( Petal.Length ~ Species + 1, data=iris )

但这些不会:

library(lattice)
bwplot( Petal.Length ~ Species, data=iris )
bwplot( Petal.Length ~ Species + 1, data=iris )

我记得有一次(尽管它可能在 S-Plus 而不是 R 中,并且在 R 中可能不可能)看到一个公式,它在公式的开头和后面包含 a0+或a 。它构建了没有截距的主效应(第一因子的每个水平的拟合平均值),但在正确的位置改变了交互编码的方式。-1+1+1

从理论上讲,可能有建模函数(我想不出,但它们可能存在或将来编写)采用公式但默认情况下不包括截距,因此+1需要指定截距。

那么,您在什么背景下提出问题?

于 2013-04-06T15:51:57.527 回答