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

it_*_*ure 1 r

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

NPE*_*NPE 7

在这种情况下lm(),它们完全相同.两种模型都包括截距.

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

  • ......以及在内部使用`model.matrix`的任何其他建模框架...... (2认同)

Gre*_*now 5

你问题的背景是什么?

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

plot.new()
text( .5, .1, y ~ x )
text( .5, .3, y ~ x + 1 )
Run Code Online (Sandbox Code Playgroud)

在这里他们是不同的(运行代码显示差异).

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

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

plot( Petal.Length ~ Species, data=iris )
plot( Petal.Length ~ Species + 1, data=iris )
Run Code Online (Sandbox Code Playgroud)

但这些不是:

library(lattice)
bwplot( Petal.Length ~ Species, data=iris )
bwplot( Petal.Length ~ Species + 1, data=iris )
Run Code Online (Sandbox Code Playgroud)

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

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

那么,你在问什么情境?