R语言鸢尾花数据集iris均值检验 - 详细步骤和代码
R语言鸢尾花数据集iris均值检验 - 详细步骤和代码
鸢尾花数据集iris是R语言中的经典数据集,包含了150个鸢尾花样本,每个样本有4个属性:'萼片长度' (Sepal.Length)、'萼片宽度' (Sepal.Width)、'花瓣长度' (Petal.Length)、'花瓣宽度' (Petal.Width) 以及它们的类别('Species')。本文章将使用R语言对该数据集进行均值检验,并提供详细的计算步骤和代码示例。
数据集概览
数据集包含150个样本,分为三类:
- 前50个样本属于第一类'Setosa'
- 中间50个样本属于第二类'Versicolor'
- 最后50个样本属于第三类'Virginica'
可以在R中输入head(iris)或者iris查看数据集的情况。
均值检验
我们将对该数据集进行以下三个方面的均值检验,检验水平α=0.05:
问题1:
将第一类鸢尾花'Setosa'的四个属性的均值记为u1,同时记u0 = (5.0, 3.4, 1.5, 0.2),检验
H0: u1 = u0 <-> H1: u1 != u0
步骤
- 计算第一类鸢尾花'Setosa'的四个属性的均值:
setosa <- subset(iris, Species == 'setosa')
u1 <- colMeans(setosa[, 1:4])
u1
- 计算样本协方差矩阵
S:
S <- cov(setosa[, 1:4])
S
- 计算样本均值向量与
u0之间的差向量d:
d <- u1 - c(5.0, 3.4, 1.5, 0.2)
d
- 计算统计量
T^2:
T2 <- t(d) %*% solve(S) %*% d
T2
- 根据自由度为4和样本量为50的假设,计算出拒绝域的截止值
F0.05(4, 45):
qf(0.95, 4, 45)
- 判断结果:由于
T^2 > F0.05(4, 45),因此我们拒绝原假设,即有足够的证据表明第一类鸢尾花'Setosa'的四个属性的均值不等于u0。
代码总结
setosa <- subset(iris, Species == 'setosa')
u1 <- colMeans(setosa[, 1:4])
S <- cov(setosa[, 1:4])
d <- u1 - c(5.0, 3.4, 1.5, 0.2)
T2 <- t(d) %*% solve(S) %*% d
qf(0.95, 4, 45)
问题2:
将第二类鸢尾花'Versicolor'的四个属性的均值记为u2,检验
H0: u1 = u2 <-> H1: u1 != u2
假设第一类和第二类鸢尾花的四个属性的协差阵不相等。
步骤
- 计算第二类鸢尾花'Versicolor'的四个属性的均值:
versicolor <- subset(iris, Species == 'versicolor')
u2 <- colMeans(versicolor[, 1:4])
u2
- 计算样本协方差矩阵
S1和S2:
S1 <- cov(setosa[, 1:4])
S2 <- cov(versicolor[, 1:4])
- 计算统计量
F:
F <- ((50 - 1) * det(S1) + (50 - 1) * det(S2)) / (100 - 2) / det((50 - 1) * (S1 + S2) / (100 - 2))
F
- 根据自由度为4和样本量为50的假设,计算出拒绝域的截止值
F0.05(4, 95):
qf(0.95, 4, 95)
- 判断结果:由于
F > F0.05(4, 95),因此我们拒绝原假设,即有足够的证据表明第一类鸢尾花'Setosa'的四个属性的均值不等于第二类鸢尾花'Versicolor'的四个属性的均值。
代码总结
versicolor <- subset(iris, Species == 'versicolor')
u2 <- colMeans(versicolor[, 1:4])
S1 <- cov(setosa[, 1:4])
S2 <- cov(versicolor[, 1:4])
F <- ((50 - 1) * det(S1) + (50 - 1) * det(S2)) / (100 - 2) / det((50 - 1) * (S1 + S2) / (100 - 2))
qf(0.95, 4, 95)
问题3:
将第三类鸢尾花'Virginica'的四个属性的均值记为u3,检验
H0: u1 = u2 = u3 <-> H1: u1, u2, u3不全相等
步骤
- 计算第三类鸢尾花'Virginica'的四个属性的均值:
virginica <- subset(iris, Species == 'virginica')
u3 <- colMeans(virginica[, 1:4])
u3
- 计算样本协方差矩阵
S1、S2和S3:
S1 <- cov(setosa[, 1:4])
S2 <- cov(versicolor[, 1:4])
S3 <- cov(virginica[, 1:4])
- 计算统计量
F:
F <- ((50 - 1) * det(S1) + (50 - 1) * det(S2) + (50 - 1) * det(S3)) / (150 - 3) / det((50 - 1) * (S1 + S2 + S3) / (150 - 3))
F
- 根据自由度为6和样本量为150的假设,计算出拒绝域的截止值
F0.05(6, 144):
qf(0.95, 6, 144)
- 判断结果:由于
F > F0.05(6, 144),因此我们拒绝原假设,即有足够的证据表明第一类鸢尾花'Setosa'的四个属性的均值不等于第二类鸢尾花'Versicolor'的四个属性的均值,也不等于第三类鸢尾花'Virginica'的四个属性的均值。
代码总结
virginica <- subset(iris, Species == 'virginica')
u3 <- colMeans(virginica[, 1:4])
S1 <- cov(setosa[, 1:4])
S2 <- cov(versicolor[, 1:4])
S3 <- cov(virginica[, 1:4])
F <- ((50 - 1) * det(S1) + (50 - 1) * det(S2) + (50 - 1) * det(S3)) / (150 - 3) / det((50 - 1) * (S1 + S2 + S3) / (150 - 3))
qf(0.95, 6, 144)
总结
本篇文章详细介绍了如何使用R语言对鸢尾花数据集iris进行均值检验,并提供了详细的计算步骤和代码示例。这些步骤和代码可以帮助你更好地理解均值检验的概念,并将其应用于实际的数据分析中。
原文地址: https://www.cveoy.top/t/topic/oj3Y 著作权归作者所有。请勿转载和采集!