2010-03-15 21 views
2

En essayant d'exécuter un modèle avec une variable de réponse p et 3 facteurs fixes pour obtenir ANOVA. voici comment mon code ressemble à:ANOVA avec 3 facteurs fixes dans 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) 

mais quand je le lance, je reçois cette erreur: il est dit ma longueur variable pour fpartnumber est différent, mais quand j'ai vérifié la longueur de chaque variable et 90. Qu'est-ce que passe?

model = lm (y ~ fpartnumber ftest finspector) erreur dans model.frame.default (formule = yang ~ fpartnumber * * ftest finspector,: longueurs variables diffèrent (trouve pour 'fpartnumber')

.

Répondre

2

Si vous ne voulez pas à cbind p1 ... p10

Ensuite, essayez:

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

et:

str(p)

utilisant:

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

à la place

+0

Oui merci Kevin, je fixe mais maintenant j'obtenir un avertissement lorsque je vérifie résumé (modèle) > résumé (modèle) Appelez: lm (formule = yang ~ fpartnumber * ftest * finspector) Résidus: TOUS les 90 résidus sont 0: aucun degré de liberté résiduel! et quand je tape ANOVA (modèle) message d'avertissement: Dans anova.lm (modèle): ANOVA F-tests sur un ajustement essentiellement parfait ne sont pas fiables – TKBell

+2

Vous obtenez ces avertissements parce que le modèle fournit un « parfait "fit: vous avez tellement de paramètres que chaque valeur est parfaitement adaptée. Vous avez besoin d'une réplication dans les triplets part/test/inspector, ou supprimez certains des termes d'interaction (par exemple fit 'p ~ (fpartnumber + ftest + finspector)^2' traitera l'interaction à trois voies comme le terme d'erreur. – Aniko

Questions connexes