【问题标题】:Calculate the analysis of variance among different groups计算不同组间的方差分析
【发布时间】:2019-03-18 15:39:45
【问题描述】:

如何计算不同组之间的方差分析,看看它是否比 R 中每个组内的方差更大。

    M1      M2      M3      M4      M5      M6      M7                          
1   G1      G2      G3      G4      G5      G6      G7                          
2   20.49   22.94   23.06   16.9   16.72    20.65   21.66                           
3   23.62   22.15   20.05   22.48   19.32   18.79   20.37                           
4   20.51   21.16   22.47   22.48   25.66   21.25   21.93                           
5   15.09   20.98   13.9    19.79   20.74   14.05   20.14                           
6   21.75   21.11   19.32   19.56   25.82   18.39   20.23       

这就是我所做的。这是正确的吗?

g1<- c(20.49,23.62,20.51,15.09,21.75)
g2<-c(22.94,22.15,21.16,20.98,21.11)
g3<-c(23.06,20.05,22.47,13.9,19.32)
g4<-c(16.9,22.48,22.48,19.79,19.56)
g5<-c(16.72,19.32,25.66,20.74,25.82)
g6<-c(20.65,18.79,21.25,14.05,18.39)
g7<-c(21.66,20.37,21.93,20.14,20.23)
Combined_g<-data.frame(cbind(g1,g2,g3,g4,g5,g6,g7))
stacked_g<- stack(Combined_g)
Anova_results<- aov(values ~ ind, data = stacked_g)
summary(Anova_results)
Df Sum Sq Mean Sq F value Pr(>F)
ind          6  34.86   5.810    0.75  0.615
Residuals   28 216.92   7.747 

【问题讨论】:

  • 尝试说明您为解决问题所做的工作以及您遇到的问题
  • 我已经把它们放在一个堆叠的格式中,所以值都在一行中,并且它们对应的组在它们旁边,我也做了aov fucntion计算,但我不知道如何计算对于两个不同方差(中间和内部)的方差。还是已经被aov函数自动计算出来了?
  • 嗨,垫子,欢迎来到 SO!请记住,SO 不是代码编写服务,因此您需要提供自己尝试过的代码。否则,您的帖子可能会被否决或关闭。

标签: r statistics variance


【解决方案1】:

你需要有长格式的数据,例如:

value factor 
20.49 G1
23.62 G1
...
22.94 G2
...
20.23 G7

然后你就可以使用函数aov

fit <- aov(value ~ factor, data=yourdataframe) 
summary(fit)

【讨论】:

    【解决方案2】:

    该问题的完整答案,包括将宽格式数据转换为narrow format tidy data set 的正确包,如下所示。

    首先,将数据加载到数据框中并使用tidyr::gather() 转换为窄格式。

    rawData <- "G1      G2      G3      G4      G5      G6      G7                          
      20.49   22.94   23.06   16.9   16.72    20.65   21.66                           
       23.62   22.15   20.05   22.48   19.32   18.79   20.37                           
       20.51   21.16   22.47   22.48   25.66   21.25   21.93                           
       15.09   20.98   13.9    19.79   20.74   14.05   20.14                           
       21.75   21.11   19.32   19.56   25.82   18.39   20.23 "
    
    data <- read.table(text=rawData,header=TRUE,stringsAsFactors=TRUE)
    library(tidyr) # needed to convert to narrow format tidy data
    narrowData <- gather(data,key="group")
    

    转换后,打印前几行。

    > head(narrowData)
      group value
    1    G1 20.49
    2    G1 23.62
    3    G1 20.51
    4    G1 15.09
    5    G1 21.75
    6    G2 22.94
    > 
    

    现在,使用aov() 函数生成方差分析并打印模型汇总统计信息。

    aovModel <- aov(value ~ group,data=narrowData)
    aovModel
    summary(aovModel)
    

    ...和输出:

    > aovModel
    Call:
       aov(formula = value ~ group, data = narrowData)
    
    Terms:
                        group Residuals
    Sum of Squares   34.86206 216.92436
    Deg. of Freedom         6        28
    
    Residual standard error: 2.783397
    Estimated effects may be unbalanced
    > summary(aovModel)
                Df Sum Sq Mean Sq F value Pr(>F)
    group        6  34.86   5.810    0.75  0.615
    Residuals   28 216.92   7.747               
    > 
    

    解读结果

    方差分析检验以下假设:

    • 零假设:均值(group1) = mean(group2) = ... = mean(group7)
    • 替代假设:所有组的平均值不相等

    如果我们愿意接受 5% 的概率出现类型 1 错误(当零假设确实为真时拒绝它),我们会将拒绝区域设置为 p = 0.05。

    由于方差同质性 F 检验的 p 值大于 0.05,因此我们无法拒绝均值相等的原假设。

    【讨论】:

    • 非常感谢!这有很大帮助。而且由于 p 值大于 alpha= 0.05,因此方差没有显着差异,对吧?还是相反?
    • @MatVicky - 我在我的答案中添加了一个关于解释结果的部分。如果有帮助,请采纳答案并点赞。谢谢!
    • 解释有道理!再次感谢您的帮助。
    • @MatVicky - 如果答案有帮助,请接受。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2020-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多