学习了一个视频https://www.bilibili.com/video/BV1m7411N79y?p=2
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)