跳到主内容

鸢尾花品种判别:用 4 个花部测量区分 3 个品种

研究背景

植物学家需要根据花萼与花瓣的长宽快速判断鸢尾花属于哪个品种。已有 30 株已鉴定品种的花(setosa / versicolor / virginica 各 10 株)与 4 个测量指标,希望建立判别规则并对新样本进行分类。

研究问题

(1) 这 4 个变量能否有效区分 3 个品种?(2) 哪些变量贡献最大?(3) 分类正确率有多高?

数据说明

30 行 × 5 列。第 1 列为品种标签(文字),第 2-5 列为花萼长、花萼宽、花瓣长、花瓣宽(厘米)。组标签可为文字,工具会自动重编码。

示例数据

组,花萼长,花萼宽,花瓣长,花瓣宽
setosa,5.1,3.5,1.4,0.2
setosa,4.9,3.0,1.4,0.2
setosa,4.7,3.2,1.3,0.2
setosa,4.6,3.1,1.5,0.2
setosa,5.0,3.6,1.4,0.2
setosa,5.4,3.9,1.7,0.4
setosa,4.6,3.4,1.4,0.3
setosa,5.0,3.4,1.5,0.2
setosa,4.4,2.9,1.4,0.2
setosa,4.9,3.1,1.5,0.1
versicolor,7.0,3.2,4.7,1.4
versicolor,6.4,3.2,4.5,1.5
versicolor,6.9,3.1,4.9,1.5
versicolor,5.5,2.3,4.0,1.3
versicolor,6.5,2.8,4.6,1.5
versicolor,5.7,2.8,4.5,1.3
versicolor,6.3,3.3,4.7,1.6
versicolor,4.9,2.4,3.3,1.0
versicolor,6.6,2.9,4.6,1.3
versicolor,5.2,2.7,3.9,1.4
virginica,6.3,3.3,6.0,2.5
virginica,5.8,2.7,5.1,1.9
virginica,7.1,3.0,5.9,2.1
virginica,6.3,2.9,5.6,1.8
virginica,6.5,3.0,5.8,2.2
virginica,7.6,3.0,6.6,2.1
virginica,4.9,2.5,4.5,1.7
virginica,7.3,2.9,6.3,1.8
virginica,6.7,2.5,5.8,1.8
virginica,7.2,3.6,6.1,2.5

分析步骤

  1. 步骤 1:确认前提:连续变量 + 已知分组

    LDA 要求判别变量为连续变量、分组已知且互斥,各组协方差矩阵近似相等(Box's M 检验)、变量近似多元正态。分组是研究设计给定的,不是聚类得到的。

    提示:如果分组未知、只是想「找相似的东西归堆」,应该用聚类分析而不是判别分析。

  2. 步骤 2:看 Wilks Λ 判断判别函数是否有用

    Λ 取值 0 到 1,越接近 0 说明组间差异越大。表中逐行给出「剔除前 k−1 个函数后」的检验:第 1 行检验全部函数,第 2 行检验剩余函数。p 不显著的函数可以舍去。

  3. 步骤 3:用贡献率决定保留几个函数

    3 组最多提取 min(变量数, 组数−1) = 2 个判别函数。看各函数的方差贡献率与累计贡献率,通常保留累计达 80% 以上的前几个函数作图即可。本例第一函数就贡献了 99.7%,第二函数的 Wilks 检验不显著(p = .183),实际只需一维即可分开三组。

  4. 步骤 4:看标准化系数找出关键变量

    比较变量对同一函数的作用大小时必须看「标准化」系数(已消除量纲),绝对值越大贡献越大。本例第一函数上花瓣长(0.30)绝对值最大,其次是花萼长(−0.21),花瓣宽与花萼宽较小。

  5. 步骤 5:结合 Box's M 与混淆矩阵下结论

    Box's M 显著说明各组协方差矩阵不等,等协方差前提被违反,此时 LDA 的分类结果只能视为近似,应改用 QDA 或 Logistic 回归复核。混淆矩阵给出各组正确率,注意这是「表观正确率」——用同一批数据建模又用它分类,必然偏高,报告时应注明或改用留一交叉验证。

结果解读

结论

整体判别效果显著,Wilks' Λ = 0.011, F(8, 48) = 52.11, p < .001;第一判别函数贡献了 99.7% 的组间变异,第二函数不再显著(Λ = 0.827, F(3, 25) = 1.75, p = .183),因此一维即可区分三个品种。表观分类正确率 100%,混淆矩阵全为对角线。但 Box's M 检验显著(χ²(20) = 37.15, p = .011),各组协方差矩阵不齐,LDA 的等协方差前提被违反,这一结果应视为近似。

为什么这样解读?

LDA 把多个相关变量压缩成少数几个互不相关的判别函数,既降低了维度又保留了组间差异信息。与 PCA 不同,LDA 的压缩方向是「朝着组间差异最大」而不是「朝着总变异最大」,因此它是有监督的降维。本例有两个容易被忽略的细节:其一,第二判别函数虽然被提取出来,但检验不显著,说明它携带的组间信息可以忽略,作图时用一维就够;其二,Box's M 显著而正确率仍高达 100%,这提醒我们「前提被违反」不等于「结论一定错」,但必须如实报告并说明稳健性存疑,同时表观正确率本身也系统性偏高,不能当作对新样本的预期表现。

如何在论文中报告

采用线性判别分析考察 4 个花部测量对 3 个鸢尾花品种的判别效果(N = 30,每组 10 株)。各组协方差矩阵齐性检验显著(Box's M = 47.17, χ²(20) = 37.15, p = .011),等协方差前提未满足,结果按近似解读。整体判别效果显著,Wilks' Λ = 0.011, F(8, 48) = 52.11, p < .001;提取 2 个判别函数,第一函数解释 99.7% 的组间变异,第二函数无统计学显著性(Λ = 0.827, F(3, 25) = 1.75, p = .183)。第一函数标准化系数以花瓣长最大(0.30),其次为花萼长(−0.21)。表观分类正确率为 100%(每组 10/10),因使用建模数据自评,实际泛化正确率预期低于此值。

常见错误

把判别分析当成聚类分析使用

LDA 必须先有已知分组标签才能建模;若分组未知,应先用聚类分析探索分组,再用独立样本验证判别规则。用聚类结果反过来做 LDA 会严重高估正确率。

用原始系数比较变量的重要性

原始系数受量纲影响(厘米与毫米会得到完全不同的系数)。比较变量贡献必须用标准化判别系数。

把表观正确率当作泛化正确率

表观正确率用建模数据自评,系统性偏高,尤其在小样本或变量多时。应报告留一交叉验证或独立验证集的正确率,并在文中注明所用评估方式。

忽略 Box's M 显著的情形

Box's M 显著说明各组协方差矩阵不等,LDA 的等协方差前提被违反。此时应改用基于相关矩阵的判别、二次判别分析(QDA),或改用 Logistic 回归(不要求等协方差)。

每组样本量太少仍强行建模

判别函数个数上限为 min(变量数, 组数−1),但每组观测数应明显多于变量数,否则组内散度矩阵奇异、结果不稳定。本工具在矩阵奇异时会岭正则化降级并给出警告。

动手跑一遍

用本案例数据打开 判别分析 计算器,亲手复现统计量、p 值与置信区间,数据只在浏览器内处理。

打开 判别分析 →