我正在尝试通过两次重复在2 ^ 4阶乘问题中运行正常性诊断程序。这是我的代码:
n = 2
A <- factor(c(rep("-", 1*n), rep("+", 1*n)))
B <- factor(c(rep("-", 2*n), rep("+", 2*n)))
C <- factor(c(rep("-", 4*n), rep("+", 4*n)))
D <- factor(c(rep("-", 8*n), rep("+", 8*n)))
obs <- c(90, 93,
74, 78,
81, 85,
83, 80,
77, 78,
81, 80,
88, 82,
73, 70,
98, 95,
72, 76,
87, 83,
85, 86,
99, 90,
79, 75,
87, 84,
80, 80)
df <- data.frame(A, B, C, D, obs)
model <- aov(obs ~ A*B*C*D, data = df)
summary(model)
par(mfrow=c(1,2))
qqnorm(resid(model), ylab = "Residuals", xlab = "Quantiles", pch = 16)
qqline(resid(model))
plot(resid(model) ~ fitted(model), ylab = "Residual", xlab = "Predicted", pch = 16)
abline(0,0)
ANOVA表为我提供了正确的值,但是当我使用正态Q-Q图分析正态条件时,它错误地为我提供了对称残差。我注意到,只有在分析四个或更多交互时才遇到此问题。在三个或更少的交互作用下,所有残差图具有相同代码的正确预期输出。
任何帮助将不胜感激
答案 0 :(得分:0)
我不清楚您为什么认为饱和模型中的残差不应该是“对称的”,您可以使用以下方法直接查看它们:
> print( sort(model$residuals), digits=4)
26 14 5 19 22 28
-4.500e+00 -3.000e+00 -2.000e+00 -2.000e+00 -2.000e+00 -2.000e+00
3 1 16 18 30 8
-2.000e+00 -1.500e+00 -1.500e+00 -1.500e+00 -1.500e+00 -1.500e+00
23 12 9 31 32 10
-5.000e-01 -5.000e-01 -5.000e-01 6.947e-17 6.947e-17 5.000e-01
11 24 7 29 15 17
5.000e-01 5.000e-01 1.500e+00 1.500e+00 1.500e+00 1.500e+00
2 20 21 27 4 6
1.500e+00 2.000e+00 2.000e+00 2.000e+00 2.000e+00 2.000e+00
13 25
3.000e+00 4.500e+00
就中位数的两侧具有成对的值而言,它们看起来很对称。显示数值的另一种方法可能是:
table( abs(sort(model$residuals)) )
6.9468775251052e-17 0.499999999999995 0.499999999999998
2 2 1
0.499999999999999 0.5 0.500000000000002
1 1 1
1.49999999999999 1.5 1.50000000000006
2 6 2
2 3 4.5
10 2 2