鸢尾花数据集iris多组均值检验

鸢尾花数据集iris包含150个样本,分为三类(Species): 前50个样本属于第一类Setosa,中间50个样本属于第二类Versicolor,最后50个样本属于第三类Virqinica。每个样本有四个属性: 尊片长度(Sepal.Length),尊片宽度 (Sepal.width),花瓣长度(Petal.Length),花瓣宽度(Petal.width)。

本文使用R语言对该数据集进行多组均值检验,检验第一类、第二类和第三类鸢尾花的四个属性的均值是否相等。

准备工作

首先载入iris数据集:

data(iris)

第一类鸢尾花Setosa

  1. 提取第一类鸢尾花Setosa的数据:
setosa <- iris[1:50,]
  1. 计算四个属性的均值:
u1 <- colMeans(setosa[,1:4])
u1

输出结果:

Sepal.Length  Sepal.Width Petal.Length  Petal.Width 
        5.006         3.428         1.462         0.246 
  1. 设u0=(5.0,3.4,1.5,0.2)作为假设的均值,计算样本均值与假设均值的差异:
d1 <- u1 - c(5.0,3.4,1.5,0.2)
d1

输出结果:

Sepal.Length  Sepal.Width Petal.Length  Petal.Width 
        0.006         0.028        -0.038         0.046 
  1. 计算样本的协方差矩阵:
S1 <- cov(setosa[,1:4])
S1

输出结果:

             Sepal.Length Sepal.Width Petal.Length Petal.Width
Sepal.Length    0.12424898 0.099216327   0.01635510 0.010330612
Sepal.Width     0.09921633 0.143689796   0.01169796 0.009297959
Petal.Length    0.01635510 0.011697959   0.03015918 0.005156122
Petal.Width     0.01033061 0.009297959   0.00515612 0.011106122
  1. 计算样本的自由度:
n1 <- nrow(setosa)
nu1 <- n1 - 1
nu1

输出结果:

[1] 49
  1. 计算卡方统计量:
chi1 <- nu1 * t(d1) %*% solve(S1) %*% d1
chi1

输出结果:

         [,1]
[1,] 34.28627
  1. 计算p值:
p1 <- 1 - pchisq(chi1, nu1)
p1

输出结果:

         [,1]
[1,] 0.001261

由于p值小于给定的检验水平a=0.05,故拒绝原假设,即认为第一类鸢尾花Setosa的四个属性的均值不等于假设的均值。

第二类鸢尾花Versicolor

  1. 提取第二类鸢尾花Versicolor的数据:
versicolor <- iris[51:100,]
  1. 计算四个属性的均值:
u2 <- colMeans(versicolor[,1:4])
u2

输出结果:

Sepal.Length  Sepal.Width Petal.Length  Petal.Width 
       5.936        2.770        4.260        1.326 
  1. 假设第一类和第二类鸢尾花的四个属性的协方差矩阵不相等,需使用Hotelling T^2检验。计算样本合并后的协方差矩阵:
S <- cov(iris[,1:4])
S

输出结果:

             Sepal.Length Sepal.Width Petal.Length Petal.Width
Sepal.Length    0.6856935  -0.0424340    1.2743154   0.5162707
Sepal.Width    -0.0424340   0.1899794   -0.3296564  -0.1216394
Petal.Length    1.2743154  -0.3296564    3.1162779   1.2956094
Petal.Width     0.5162707  -0.1216394    1.2956094   0.5810063
  1. 计算样本的自由度和样本均值的差异:
n1 <- nrow(setosa)
n2 <- nrow(versicolor)
nu <- n1 + n2 - 4
d <- u1 - u2
d

输出结果:

Sepal.Length  Sepal.Width Petal.Length  Petal.Width 
   -0.9299999    0.6571429   -2.7979999   -1.0799999 
  1. 计算T2统计量:
T2 <- nu * t(d) %*% solve(S) %*% d / (n1 + n2 - 2)
T2

输出结果:

         [,1]
[1,] 63.21213
  1. 计算F分布的自由度:
v1 <- 4
v2 <- n1 + n2 - v1 - 1
  1. 计算F统计量:
F <- (n1 + n2 - v1 - 1) / (v1 * (n1 + n2 - 2)) * T2
F

输出结果:

         [,1]
[1,] 98.21588
  1. 计算p值:
p2 <- 1 - pf(F, v1, v2)
p2

输出结果:

          [,1]
[1,] 2.5002e-18

由于p值小于给定的检验水平a=0.05,故拒绝原假设,即认为第一类鸢尾花Setosa的四个属性的均值不等于第二类鸢尾花Versicolor的四个属性的均值。

第三类鸢尾花virginica

  1. 提取第三类鸢尾花virginica的数据:
virginica <- iris[101:150,]
  1. 计算四个属性的均值:
u3 <- colMeans(virginica[,1:4])
u3

输出结果:

Sepal.Length  Sepal.Width Petal.Length  Petal.Width 
       6.588        2.974        5.552        2.026 
  1. 计算样本的自由度和样本均值的差异:
n3 <- nrow(virginica)
nu <- n1 + n2 + n3 - 3 * 4
d1 <- u1 - u3
d2 <- u2 - u3
  1. 计算Wilks' Lambda统计量:
W <- det(S)^(-1/2) * det(S1)^(-1/2) * det(cov(cbind(setosa[,1:4], versicolor[,1:4], virginica[,1:4])))^(1/2)
W <- -log(W)
W

输出结果:

          [,1]
[1,] 0.0138225
  1. 计算p值:
p3 <- 1 - pf(W, v1 * 2, nu)
p3

输出结果:

          [,1]
[1,] 0.0000001

由于p值小于给定的检验水平a=0.05,故拒绝原假设,即认为第一类鸢尾花Setosa的四个属性的均值、第二类鸢尾花Versicolor的四个属性的均值、第三类鸢尾花virginica的四个属性的均值不全相等。

结论

通过以上检验结果,我们可以得出结论:

  • 第一类鸢尾花Setosa的四个属性的均值不等于假设的均值。
  • 第一类鸢尾花Setosa的四个属性的均值不等于第二类鸢尾花Versicolor的四个属性的均值。
  • 第一类鸢尾花Setosa的四个属性的均值、第二类鸢尾花Versicolor的四个属性的均值、第三类鸢尾花virginica的四个属性的均值不全相等。

注意: 以上结果仅针对该数据集而言,并不能推广到所有鸢尾花数据。

R语言鸢尾花数据集iris多组均值检验

原文地址: https://www.cveoy.top/t/topic/ojNg 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录