2010-03-15 2 views
2

Im пытается запустить модель с переменной ответа p и 3 фиксированными факторами, чтобы получить ANOVA. это как мой код выглядит следующим образом:ANOVA с 3 фиксированными факторами в R

#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. Что такое продолжается ?

модель = лм (у ~ 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 (модель) предупреждения: В anova.lm (модель): ANOVA F-тесты на принципиально идеально подходит ненадежны – TKBell

+2

Вы получаете эти предупреждения, так как модель не предусматривает «совершенную «fit: у вас есть так много параметров, что каждое значение прекрасно установлено. Вам нужна некоторая репликация в тройках частей/тестов/инспекторов или удалить некоторые из условий взаимодействия (например, fit 'p ~ (fpartnumber + ftest + finspector)^2 будет рассматривать трехстороннее взаимодействие как условие ошибки. – Aniko

Смежные вопросы