首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >全嵌套方差分析

全嵌套方差分析
EN

Stack Overflow用户
提问于 2015-01-17 12:40:40
回答 2查看 863关注 0票数 0

我试图在NIST的下面一页的底部复制这个示例:

http://www.itl.nist.gov/div898/handbook/ppc/section2/ppc233.htm

使用Minitab和SPSS,这不是一个问题,但对于R,我不明白。

我试过:

代码语言:javascript
复制
mydata<-read.csv("mydata.csv",header=T,sep=";")
summary(aov(Measure~factor(Machine)/factor(Operator),data=mydata))

但F值不正确。

谢谢你的帮忙

PS:这是NIST (mydata.csv)的数据集

代码语言:javascript
复制
Operator;Machine;Replicate;Measure
1;1;1;0.125
1;1;2;0.127
1;1;3;0.125
1;1;4;0.126
1;1;5;0.128
1;2;1;0.118
1;2;2;0.122
1;2;3;0.12
1;2;4;0.124
1;2;5;0.119
1;3;1;0.123
1;3;2;0.125
1;3;3;0.125
1;3;4;0.124
1;3;5;0.126
1;4;1;0.126
1;4;2;0.128
1;4;3;0.126
1;4;4;0.127
1;4;5;0.129
1;5;1;0.118
1;5;2;0.129
1;5;3;0.127
1;5;4;0.12
1;5;5;0.121
2;1;1;0.124
2;1;2;0.128
2;1;3;0.127
2;1;4;0.126
2;1;5;0.129
2;2;1;0.116
2;2;2;0.125
2;2;3;0.119
2;2;4;0.125
2;2;5;0.12
2;3;1;0.122
2;3;2;0.121
2;3;3;0.124
2;3;4;0.126
2;3;5;0.125
2;4;1;0.126
2;4;2;0.129
2;4;3;0.125
2;4;4;0.13
2;4;5;0.124
2;5;1;0.125
2;5;2;0.123
2;5;3;0.114
2;5;4;0.124
2;5;5;0.117
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-17 20:07:54

您可以指定带有随机项的模型,以及如何使用公式中的Error项来划分F比(我将机器和操作符更改为数据中的因子):

代码语言:javascript
复制
> summary(aov(Measure~Machine + Error(interaction(Machine,Operator)),data=mydat))

Error: interaction(Machine, Operator)
          Df    Sum Sq   Mean Sq F value  Pr(>F)   
Machine    4 0.0003033 7.583e-05   20.38 0.00269 **
Residuals  5 0.0000186 3.720e-06                   
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Error: Within
          Df   Sum Sq  Mean Sq F value Pr(>F)
Residuals 40 0.000346 8.65e-06            
票数 1
EN

Stack Overflow用户

发布于 2015-01-17 16:09:01

aov函数的摘要:

代码语言:javascript
复制
> summary(aov(Measure~factor(Machine)/factor(Operator),data=mydata))
                                 Df    Sum Sq   Mean Sq F value   Pr(>F)    
factor(Machine)                   4 0.0003033 7.583e-05   8.766 3.52e-05 ***
factor(Machine):factor(Operator)  5 0.0000186 3.720e-06   0.430    0.825    
Residuals                        40 0.0003460 8.650e-06                     
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

正如您在问题中所说的,8.766不同于您所期望的20.38

但是,这不是函数的错误。这是因为aov函数是如何工作的。正如文档所述(?aov):

通过调用lm对层进行方差模型的拟合。

请注意上线中的“每一个”。这意味着aov函数总是根据variable MSE / Residuals MSE计算F统计量(F值)。如您所见,8.766factor(Machine)Residuals (即75.83 / 8.65 = 8.766 )之间划分的结果。

在源代码中也可以看到这一点,如果您想挖得更深一点(在控制台上键入summary.aov ),其中写着:

代码语言:javascript
复制
if (rdf > 0L) {
        TT <- ms/ms[nt]
        TP <- pf(TT, df, rdf, lower.tail = FALSE)
        TT[nt] <- TP[nt] <- NA
        x$"F value" <- TT
        x$"Pr(>F)" <- TP
    }

这也是为什么F value for factor(Machine):factor(Operator)是正确的。

如果您想要找到F-统计量和相关的概率,那么factor(Machine)factor(Machine):factor(Operator)之间的除法只需计算如下:

代码语言:javascript
复制
a <- summary(aov(Measure~factor(Machine)/factor(Operator),data=mydata))

代码语言:javascript
复制
> a[[1]]$'Mean Sq'[1] / a[[1]]$'Mean Sq'[2] #which is what you want 
[1] 20.38441

对应概率Pr(>F)

代码语言:javascript
复制
> pf(20.38441, df1=4, df2=5, lower.tail = FALSE) 
[1] 0.00269263
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27999553

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档