首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何估计R的变异源?(对于双向方差分析)

如何估计R的变异源?(对于双向方差分析)
EN

Stack Overflow用户
提问于 2021-02-23 09:05:01
回答 1查看 99关注 0票数 2

在我的实验室中,我们使用了一个统计软件包,但现在我们使用R进行统计。

使用统计软件,经过双因素方差分析,结果表包括“变异来源”和“总变异的百分比”。如何从R中获取这些值?

示例:此数据集

代码语言:javascript
复制
Temperature <- factor(c(rep("cold", times = 4),
                        rep("hot", times = 4)),
                      levels = c("cold", "hot"))

Light <- factor(rep(c(rep("blue", times = 2),
                      rep("yellow", times = 2)),
                    times = 2),
                levels = c("blue", "yellow"))

Result <- c(90.40, 85.20, 21.70, 25.30,
            75.12, 77.36, 6.11, 10.8)

Data <- data.frame(Temperature, Light, Result)

R中的双因素方差分析:

代码语言:javascript
复制
two_wayANOVA <- aov(data = Data,
                    formula = Result ~ Temperature * Light)
summary(two_wayANOVA)


 Df Sum Sq Mean Sq  F value  Pr(>F)    
Temperature        1    354     354   42.250 0.00289 ** 
Light              1   8723    8723 1041.366 5.5e-06 ***
Temperature:Light  1      6       6    0.725 0.44250    
Residuals          4     34       8                     
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

在统计软件中:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-23 10:01:06

正如@yh6评论的那样,可以通过将SumSq除以"Sum Sq“的总和来确定变异的来源。

扫把包有方便tidy函数从aov函数,并将其转换为数据框以便于处理。

代码语言:javascript
复制
library(broom)
output <- tidy(two_wayANOVA)

output$variationSource <- output$sumsq/sum(output$sumsq)*100
output


# A tibble: 4 x 7
  term                 df   sumsq  meansq statistic     p.value variationSource
                                            
1 Temperature           1  354.    354.      42.2    0.00289              3.88  
2 Light                 1 8723.   8723.    1041.     0.00000550          95.7   
3 Temperature:Light     1    6.07    6.07     0.725  0.442                0.0666
4 Residuals             4   33.5     8.38    NA      NA                   0.368

更新

要重新创建重要性列,请将以下行添加到脚本中:

代码语言:javascript
复制
output$sig <- cut(output$p.value, breaks=c(0,  0.001,  0.01,  0.05,  0.1, 1), 
                                  labels=c( '***',  '**' , '*' , '.', ' ' ))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66325630

复制
相关文章

相似问题

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