ที่นี่มีสองตัวเลือกด้วย aov และ lme (ฉันคิดว่าเป็นที่ต้องการ 2):
require(MASS) ## for oats data set
require(nlme) ## for lme()
require(multcomp) ## for multiple comparison stuff
Aov.mod <- aov(Y ~ N * V + Error(B/V), data = oats)
the_residuals <- aov.out.pr[[3]][, "Residuals"]
Lme.mod <- lme(Y ~ N * V, random = ~1 | B/V, data = oats)
the_residuals <- residuals(Lme.mod)
ตัวอย่างดั้งเดิมมาโดยไม่มีการโต้ตอบ ( Lme.mod <- lme(Y ~ N * V, random = ~1 | B/V, data = oats)
) แต่ดูเหมือนว่าจะทำงานกับมัน (และให้ผลลัพธ์ที่แตกต่างดังนั้นมันจึงทำอะไรบางอย่าง)
และนั่นคือ ...
แต่เพื่อความสมบูรณ์:
1 - บทสรุปของโมเดล
summary(Aov.mod)
anova(Lme.mod)
2 - การทดสอบ Tukey พร้อมมาตรการซ้ำ anova (3 ชั่วโมงมองหาสิ่งนี้ !!)
summary(Lme.mod)
summary(glht(Lme.mod, linfct=mcp(V="Tukey")))
3 - แผนการปกติและเนื้อเรื่อง
par(mfrow=c(1,2)) #add room for the rotated labels
aov.out.pr <- proj(aov.mod)
#oats$resi <- aov.out.pr[[3]][, "Residuals"]
oats$resi <- residuals(Lme.mod)
qqnorm(oats$resi, main="Normal Q-Q") # A quantile normal plot - good for checking normality
qqline(oats$resi)
boxplot(resi ~ interaction(N,V), main="Homoscedasticity",
xlab = "Code Categories", ylab = "Residuals", border = "white",
data=oats)
points(resi ~ interaction(N,V), pch = 1,
main="Homoscedasticity", data=oats)