ANOVA-单因素方差分析

学习了一个视频https://www.bilibili.com/video/BV1m7411N79y?p=2

图例1

1.什么是方差分析

1.1 方差分析的目的

比较多组均数的差异。即检验在控制变量的不同水平下(不同分组),观测变量各总体分布(需要从mean和sd上考虑)是否存在显著差异

1.2 方差分析的情景

分析一个数值型变量与一个或多个分类变量的相关性(即数值变量在各个分类中有无差异)

1.3 方差分析的结果

不同组别的均数差异显著-->该数值型变量与分类变量是相关的(这是我们最想要的结果,比如开发一种新药物,使用的不同剂量对病人是否有疗效上的差异)!

1.4 方差分析的数据

控制变量(如药物) 水平(如剂量) 观测变量(如疗效)
.. .. ..

2. 前提条件

  • 控制变量的不同水平下,观测变量服从正态分布
  • 控制变量的不同水平下,观测变量的方差齐

3. 基本原理

4.ANOVA-单因素方差分析

4.1 模型

4.2 假设

假设

4.3 计算公式

公式

4.4 统计量

检验统计量

5. R语言实现

5.1 加载包和数据

library(multcomp)
data("cholesterol")
head(cholesterol)
##     trt response
## 1 1time   3.8612
## 2 1time  10.3868
## 3 1time   5.9059
## 4 1time   3.0609
## 5 1time   7.7204
## 6 1time   2.7139
unique(cholesterol$trt)
## [1] 1time  2times 4times drugD  drugE 
## Levels: 1time 2times 4times drugD drugE

5.2正态性检验

# hapiro-Wilk Normality Test
shapiro.test(cholesterol$response)
## Shapiro-Wilk normality test
## data:  cholesterol$response
## W = 0.97722, p-value = 0.4417

5.3 方差齐性检验

# Bartlett Test of Homogeneity of Variances
bartlett.test(data=cholesterol,
              response~trt)
## Bartlett test of homogeneity of variances
## data:  response by trt
## Bartlett's K-squared = 0.57975, df = 4,
## p-value = 0.9653
## 或者使用:Levene's Test
car::leveneTest(data=cholesterol,
                response~trt)
## Levene's Test for Homogeneity of Variance (center = median)
##       Df F value Pr(>F)
## group  4  0.0755 0.9893
##      45 

5.4 ANOVA检验

library(dplyr)
aov(data = cholesterol,
    response~trt) %>% 
  summary()
##             Df Sum Sq Mean Sq F value   Pr(>F)    
## trt          4 1351.4   337.8   32.43 9.82e-13 ***
##   Residuals   45  468.8    10.4                     
## ---
##  Signif. codes:  
##  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

# 或者使用:oneway.test
oneway.test(data = cholesterol,
            response~trt,
            var.equal = T)#方差齐不齐,齐则设为T,不齐设为F
## One-way analysis of means
## data:  response and trt
## F = 32.433, num df = 4, denom df = 45,
## p-value = 9.819e-13

5.5可视化

library(gplots)
plotmeans(data = cholesterol,
          response~trt)
mean分布

你可能感兴趣的:(ANOVA-单因素方差分析)