知识库 > 数学方法 > 多元统计分析

判别分析    

  • 判别分析是用于判断样本所属类型的一种统计分析方法。目的是对已知归类的数据建立由数值指标构成的归类规则,然后把这样的规则应用到未知归类的去归类.
    判别分析的一般提法是:设有k个总体,已知样品X来源于k个总体中的一个,但不知道究竟来自哪一个。判别分析就是要根据对这k个总体的已知知识(由过去的经验和采样获得)和待判样品的一些指标的观测值,去判断样品X究竟属于哪一个总体。
    1、距离判别
    距离判别又称直观判别法:样品和哪个总体距离最近,就判它属于哪个总体。设有两个总体,现在又一个样品X,则判别准则可以写成:

    距离D的定义有很多种,但是考虑判别分析中常涉及多变量的问题,且变量之间可能有相关性,故多使用马氏距离:

    其中的协方差,的均值向量。
    2、贝叶斯判别
    距离判别简单直观,很实用,但是距离判别的方法把总体等同看待,没有考虑到总体会以不同的概率(先验概率)出现,也没有考虑误判之后所造成的损失的差异。一个好的判别方法,既要考虑到各个总体出现的先验概率,又要考虑到错判造成的损失,Bayes判别就具有这些优点,其判别效果更加理想,应用也更广泛。
    设有总体,具有概率密度函数。并且根据以往的统计分析,知道出现的概率为。即当样本发生时,求他属于某类的概率。由贝叶斯公式计算后验概率,有:


    判给。在正态的假定下,为正态分布的密度函数。
    3、Fisher判别
    Fisher判别的基本思想是投影,将组m维数据投影到一个方向,使得投影后组和组之间尽可能地分开,而衡量组和组之间之间是否分开的方法借组于一元方差分析的思想.
    设p维总体,令维空间中任一向量,表示在方向上的投影,通过这样的投影,我们把数据转化为组数据:,按方差分析的思想,其组间平方和为

    合并的组内平方和:

    其中分别是的样本均值以及总样本均值。若类的均值有显著差异,则比值应该充分大.因为该值也被的量纲影响,因此我们加入约束条件:,这样,我们就只需要找的极大值.
    使用lagrange乘数法可以容易地导出为特征方程的最大特征跟对应的满足的特征向量.如果使用一个线性特征方程不能很好的区分各个总体,则可使用第二、第三特征向量.

    定义:Discrim(A:array,X:array,method:integer,options:array):array;
    说明:按照给定分类训练样本,根据训练结果对待定样本类别判定,也可作为原样本的回代检验
    参数:
    A:样本数据观测矩阵,每行为一个样本,第0列为所在分类
    X:样本数据观测矩阵,为待分类样本
    Method:为判别方法,默认为 0 bayesian 判别,1为距离判别
    Options: 为方法选项
    默认options := array('cov':1,'backtest':1,'crosstest':1)
    'cov' 总体协方差是否相等,默认0表示相等 ,1表示不相等
    'backtest' 是否回代检验,默认0表示不检验,1表示检验
    'crosstest' 是否进行交叉回代检验,默认0表示不检验,1表示检验

    例子:1991年全国30个省市居民消费判别(参见平台下的Demo_Discrim_cluster函数)
    省(市)类型x1x2x3x4x5x6x7x8
    山西18.3523.537.518.6217.4210.001.0411.21
    内蒙古19.2523.756.619.1917.7710.481.7210.51
    吉林18.1930.504.729.7816.287.602.5210.32
    黑龙江17.7329.205.429.4319.298.492.5210.00
    河南19.4227.938.208.1416.179.421.559.76
    甘肃19.1627.989.019.3215.999.101.8211.35
    青海110.0628.6410.5210.0516.188.391.9610.81
    河北19.0928.127.409.6217.2611.122.4912.65
    陕西19.4128.205.7710.8016.3611.561.5312.17
    宁夏18.7028.127.2110.5319.4513.301.6611.96
    新疆16.9329.854.549.4916.6210.651.8813.61
    18.6736.057.317.7516.6711.682.3812.88
    云南19.9837.697.018.9416.1511.080.8311.67
    湖南16.7738.696.018.8214.7911.441.7413.23
    安徽18.1437.759.618.4913.159.761.2811.28
    贵州17.6735.718.048.3115.137.671.4113.25
    辽宁17.9039.778.4912.9419.2911.052.0413.29
    四川17.1840.917.328.9417.6012.751.1414.80
    山东18.8233.707.5910.9818.8214.731.7810.10
    江西16.2535.024.726.2810.037.151.9310.39
    福建210.6052.417.709.9812.5311.702.3114.69
    广西27.2752.653.849.1613.0315.261.9814.57
    海南213.4555.855.507.459.559.522.2116.30
    天津210.8544.687.3214.5117.1312.081.2611.57
    江苏27.2145.797.6610.3616.5612.862.2511.69
    浙江27.6850.3711.3513.3019.2514.592.7514.87
    北京27.7848.448.0020.5122.1215.731.1516.61
    西藏待判7.9439.6520.9720.8222.5212.411.757.90
    上海待判8.2864.348.0022.2220.0615.120.7222.89
    广东待判12.4776.395.5211.2414.5222.005.6425.50


    a:=array(
    (1.00,8.35,23.53,7.51,8.62,17.42,10.00,1.04,11.21),
    (1.00,9.25,23.75,6.61,9.19,17.77,10.48,1.72,10.51),
    (1.00,8.19,30.5,4.72,9.78,16.28,7.6,2.52,10.32),
    (1.00,7.73,29.2,5.42,9.43,19.29,8.49,2.52,10.00),
    (1.00,9.42,27.93,8.2,8.14,16.17,9.42,1.55,9.76),
    (1.00,9.16,27.98,9.01,9.32,15.99,9.1,1.82,11.35),
    (1.00,10.06,28.64,10.52,10.05,16.18,8.39,1.96,10.81),
    (1.00,9.09,28.12,7.4,9.62,17.26,11.12,2.49,12.65),
    (1.00,9.41,28.2,5.77,10.8,16.36,11.56,1.53,12.17),
    (1.00,8.7,28.12,7.21,10.53,19.45,13.3,1.66,11.96),
    (1.00,6.93,29.85,4.54,9.49,16.62,10.65,1.88,13.61),
    (1.00,8.67,36.05,7.31,7.75,16.67,11.68,2.38,12.88),
    (1.00,9.98,37.69,7.01,8.94,16.15,11.08,0.83,11.67),
    (1.00,6.77,38.69,6.01,8.82,14.79,11.44,1.74,13.23),
    (1.00,8.14,37.75,9.61,8.49,13.15,9.76,1.28,11.28),
    (1.00,7.67,35.71,8.04,8.31,15.13,7.67,1.41,13.25),
    (1.00,7.9,39.77,8.49,12.94,19.29,11.05,2.04,13.29),
    (1.00,7.18,40.91,7.32,8.94,17.6,12.75,1.14,14.8),
    (1.00,8.82,33.7,7.59,10.98,18.82,14.73,1.78,10.1),
    (1.00,6.25,35.02,4.72,6.28,10.03,7.15,1.93,10.39),
    (2.00,10.6,52.41,7.7,9.98,12.53,11.7,2.31,14.69),
    (2.00,7.27,52.65,3.84,9.16,13.03,15.26,1.98,14.57),
    (2.00,13.45,55.85,5.5,7.45,9.55,9.52,2.21,16.3),
    (2.00,10.85,44.68,7.32,14.51,17.13,12.08,1.26,11.57),
    (2.00,7.21,45.79,7.66,10.36,16.56,12.86,2.25,11.69),
    (2.00,7.68,50.37,11.35,13.3,19.25,14.59,2.75,14.87),
    (2.00,7.78,48.44,8.00,20.51,22.12,15.73,1.15,16.61));
    X:=array(
    (7.94,39.65,20.97,20.82,22.52,12.41,1.75,7.9),
    (8.28,64.34,8.00,22.22,20.06,15.12,0.72,22.89),
    (12.47,76.39,5.52,11.24,14.52,22.00,5.64,25.5));
    return Discrim(a,x,0,array('cov',1,'backtest':1,'crosstest':1));