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

时间:2013-04-06 14:16:04

标签: r

R?

中Y~X和Y~X + 1之间的区别是什么?

2 个答案:

答案 0 :(得分:7)

lm()的背景下,它们完全相同。两种模型都包括拦截。

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

答案 1 :(得分:5)

你问题的背景是什么?

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

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

这里它们不同(运行代码显示差异)。

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

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

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中可能不可能)在开头包含0+-1的公式+1后面的公式。它构造了没有截距的主效应(第一因子的每个级别的拟合平均值),但正确位置的+1改变了交互编码的方式。

理论上可能存在建模函数(我无法想到,但它们可能存在或将来会被编写),它们采用公式但默认情况下不包括截距,因此+1将需要指定一个拦截。

那么,你在问什么背景?