2013-04-06 131 views

回答

5

問題的背景是什麼?

如前所述,在lm和其他內部使用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-加,而除R並且在R中可能是不可能的)在開始時包含0+-1的公式以及在公式後面的+1。它構造了沒有攔截的主要效果(適合第一個因子的每個級別的平均值),但是在正確的位置上的+1改變了交互的編碼方式。

從理論上講,可能有建模功能(我想不出任何,但他們可能存在或將來會寫)採取一個公式,但默認情況下不包括截距,所以需要+1指定一個截距。

那麼,你在問什麼問題?

7

lm()的背景下,它們完全相同。這兩種模式都包括攔截。

要刪除截距,可以寫Y ~ X - 1Y ~ X + 0

+2

...以及內部使用'model.matrix'的任何其他建模框架... – 2013-04-06 15:02:10

相關問題