2010-03-15 65 views
2

我試圖運行具有響應變量p和3個固定因子的模型以獲得ANOVA。這是我的代碼看起來像:在R中有3個固定因子的方差分析

#run it as 3 fixed factor model 
p1=c(37,38,37,41,41,40,41,42,41) 
p2=c(42,41,43,42,42,42,43,42,43) 
p3=c(30,31,31,31,31,31,29,30,28) 
p4=c(42,43,42,43,43,43,42,42,42) 
p5=c(28,30,29,29,30,29,31,29,29) 
p6=c(42,42,43,45,45,45,44,46,45) 
p7=c(25,26,27,28,28,30,29,27,27) 
p8=c(40,40,40,43,42,42,43,43,41) 
p9=c(37,38,37,41,41,40,41,42,41) 
p10=c(35,34,34,35,35,34,35,34,35) 
p = cbind(p1,p2,p3,p4,p5,p6,p7,p8,p9,p10) 
partnumber=c(rep(1,9),rep(2,9),rep(3,9),rep(4,9),rep(5,9),rep(6,9),rep(7,9),rep(8,9),rep(9,9),rep(10,9)) 
test=c(rep(c(rep(1:3,3)),10)) 
inspector = rep(c(rep(1,3),rep(2,3),rep(3,3)),10) 
fpartnumber = factor(partnumber) 
ftest = factor(test) 
finspector = factor(inspector) 
model=lm(p~fpartnumber*ftest*finspector) 
summary(model) 
anova(model) 

但是當我運行它,我得到這個錯誤:它說我的fpartnumber可變長度是不同的,但是當我檢查每個變量的長度是90。什麼是繼續?

模型= LM(Y〜fpartnumber FTEST finspector) 錯誤model.frame.default(式=陽〜fpartnumber * FTEST * finspector,: 可變長度不同(發現 'fpartnumber')

回答

2

如果你不想cbind P1 ... P10

然後嘗試:

data.frame(p, fpartnumber, ftest, finspector)

和:

str(p)

使用:

p = c(p1,p2,p3,p4,p5,p6,p7,p8,p9,p10) 

代替

+0

是啊,感謝凱文,我固定的,但現在我得到一個警告,當我檢查彙總(模型) >摘要(模型) 致電: lm (formula = yang〜fpartnumber * ftest * finspector) 殘差: 所有90個殘差都是0:沒有殘餘自由度! 這個當我輸入方差分析(模型) 警告消息: 在anova.lm(模型):上基本上完美契合 ANOVA F檢驗是不可靠的 – TKBell 2010-03-15 02:52:05

+2

你得到這些警告,因爲模型確實提供了一個「完美「fit:你有很多參數,每個值都可以很好地擬合。您需要在part/test/inspector三元組中進行一些複製,或者刪除一些交互項(例如,適配'p〜(fpartnumber + ftest + finspector)^ 2')會將3路交互視爲錯誤項。 – Aniko 2010-03-15 12:57:24