2014-10-02 98 views
2

通常從aov()開始,使用summary()函數後可以得到殘差。如何從重複測量的方差分析模型中得到殘差R

但是,當我使用重複測量方差分析和公式不同時,如何獲得殘差?

## as a test, not particularly sensible statistically 
npk.aovE <- aov(yield ~ N*P*K + Error(block), npk) 
npk.aovE 
summary(npk.aovE) 
Error: block 
      Df Sum Sq Mean Sq F value Pr(>F) 
N:P:K  1 37.0 37.00 0.483 0.525 
Residuals 4 306.3 76.57    

Error: Within 
      Df Sum Sq Mean Sq F value Pr(>F) 
N   1 189.28 189.28 12.259 0.00437 ** 
P   1 8.40 8.40 0.544 0.47490 
K   1 95.20 95.20 6.166 0.02880 * 
N:P  1 21.28 21.28 1.378 0.26317 
N:K  1 33.14 33.14 2.146 0.16865 
P:K  1 0.48 0.48 0.031 0.86275 
Residuals 12 185.29 15.44     
--- 
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Intuitial summary(npk.aovE)$residuals回報NULL .. 能有人能幫助我嗎?

+0

你就不能從你的估計減去你的意見? – 2014-10-02 20:43:07

回答

2

看的

> names(npk.aovE) 

輸出,並嘗試

> npk.aovE$residuals 

編輯:我很抱歉,我太快速地閱讀你的榜樣。我建議用aov()的多級模型是不可能的。請嘗試以下操作:

> npk.pr <- proj(npk.aovE) 
> npk.pr[[3]][, "Residuals"] 

這裏有一個簡單的可重複任何人都可以更動,如果他們遇到同樣的問題:

x1 <- gl(8, 4)                 
block <- gl(2, 16)                
y <- as.numeric(x1) + rnorm(length(x1))           
d <- data.frame(block, x1, y)             

m <- aov(y ~ x1 + Error(block), d)            
m.pr <- proj(m)                 
m.pr[[3]][, "Residuals"] 
+0

對於地層模型,它不起作用,正如我上面寫的。 – 2014-10-02 21:24:16

+1

我已更新答案。 – MAB 2014-10-02 21:46:01

+0

謝謝!不知道'proj()'函數。 – 2014-10-03 10:26:23

1

另一種選擇是與LME:

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的概要(3小時尋找這!!)。它在交互時會引發警告(*而不是+),但似乎對ignore it是安全的。請注意,VN是公式中的因素。

summary(Lme.mod) 
summary(glht(Lme.mod, linfct=mcp(V="Tukey"))) 
summary(glht(Lme.mod, linfct=mcp(N="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) 

enter image description here