美文网首页
判别分析及R使用Part1-Fisher判别法

判别分析及R使用Part1-Fisher判别法

作者: 3between7 | 来源:发表于2022-12-19 16:49 被阅读0次

    本章为MOOC课程《多元统计分析及R语言建模》课程第六章,前5章笔记均已发布过,想看的可以去我的主页巴拉巴拉。

    6.1 判别分析的概念

    • 概念
      判别分析(Discriminat Analysis)是多元分析中用于判别样本所属类型的一种统计分析方法。在已知的分类之下,对新的样本,可以利用此法选定一判别标准,以判定将该新样本放置于哪个类中。

    • 种类

      • 确定性判别:Fisher型判别
        (1)线性型
        (2)距离型
        (3)(非线性型)
      • 概率性判别:Bayes型判别
        (1)概率型
        (2)损失型

    6.2 线性判别分析

    线性判别分析其实就是Y为分类变量(但不是0,1这种,是1,2这种)时的线性回归分析,如果我们能求解出如下函数,那么就可以用此函数判别Y的类型了:
    Y = \alpha_1X_1 + \alpha_2X_2 + ... + \alpha_pX_p = \alpha'X

    一、求Fisher线性判别函数

    两总体.png
    根据以往学过的知识我们知道,若想求两个总体G_1G_2(当然是满足正态分布的两个总体)是否有差异,可以使用t检验来做:
    t = \frac{|\overline Y_1 - \overline Y_2 |}{S_p}
    t检验是要判断两总体是否有差异,而线性判别分析是想让两总体有差异,因此也是可以用t检验的思想去处理。上述公式中的t其实就是Fisher检验中的\lambda,t检验是求t的值,而Fisher线性判别函数是使得t也就是\lambda最大,因为上述公式无法求导,所以需要平方一下:
    \lambda = \frac{(\overline Y_1 - \overline Y_2 )^2}{S_p^2}
    这里有个定理:线性组合Y=\alpha'X=(\overline X_1 - \overline X_2 )'S^{-1}_pX对所有的线性系数向量\alpha',使\lambda达到最大。

    二、计算判别界值

    简单的情况,求判别界值将求到的线性系数\alpha'与自变量代入线性判别函数求出Y_0即可:
    \overline Y_1 = \alpha'\overline X_1 \\ \overline Y_2 = \alpha'\overline X_2

    Y_0 =\frac{ \overline Y_1+\overline Y_2}{2}

    三、建立判别标准

    • Y < Y_0时,则X ∈ G_1,否则X ∈ G_2
    • Y > Y_0时,则X ∈ G_2,否则X ∈ G_1
    • Y = Y_0时,待判。

    四、举例说明

    表6.2.png
    今天和昨天湿温差x_1及气温差x_2是预报明天下雨否的其中两个重要因子,试建立Fisher线性判别函数。如测得今天 x_1=8.1, x_2=2.0,试报明天是雨天还是晴天?
    分析前先用t检验看下数据的情况:
    >d6.1 <- read.xlsx("/home/my/桌面/MOOC/多元统计分析/mvstats5.xlsx",sheet="d6.1")
    >boxplot(x1~G,d6.1)
    >boxplot(x2~G,d6.1)
    
    boxplot1.png
    boxplot2.png

    大致可以看出用x1无法很好的区分两组,而两组的x2分布的差异还是比较明显的,再用t检验看看:

    >t.test(x1~G,d6.1)
        Welch Two Sample t-test
    
    data:  x1 by G
    t = 0.59897, df = 11.671, p-value = 0.5606
    alternative hypothesis: true difference in means between group 1 and group 2 is not equal to 0
    95 percent confidence interval:
     -3.443696  6.043696
    sample estimates:
    mean in group 1 mean in group 2 
               0.92           -0.38 
    >t.test(x2~G,d6.1)
        Welch Two Sample t-test
    
    data:  x2 by G
    t = -3.2506, df = 17.655, p-value = 0.004527
    alternative hypothesis: true difference in means between group 1 and group 2 is not equal to 0
    95 percent confidence interval:
     -11.118792  -2.381208
    sample estimates:
    mean in group 1 mean in group 2 
               2.10            8.85 
    

    可看出两组的x2有显著差异。因为因变量只有两类,我们其实可以用Logistic模型分析这个问题,只需要我们减个1即可:

    >summary(glm(G-1~x1+x2,family=binomial,d6.1))
    Call:
    glm(formula = G - 1 ~ x1 + x2, family = binomial, data = d6.1)
    
    Deviance Residuals: 
         Min        1Q    Median        3Q       Max  
    -1.81637  -0.63629   0.04472   0.54520   2.13957  
    
    Coefficients:
                Estimate Std. Error z value Pr(>|z|)  
    (Intercept)  -2.0761     1.1082  -1.873   0.0610 .
    x1           -0.1957     0.1457  -1.344   0.1791  
    x2            0.3813     0.1681   2.269   0.0233 *
    ---
    Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
    
    (Dispersion parameter for binomial family taken to be 1)
    
        Null deviance: 27.726  on 19  degrees of freedom
    Residual deviance: 17.036  on 17  degrees of freedom
    AIC: 23.036
    
    Number of Fisher Scoring iterations: 5
    

    结果和之前的t检验一样,x2的系数是显著的。若使用线性判别分析,就不用减1了:

    >attach(d6.1)
    >library(MASS)
    >ld=lda(G~x1+x2)
    >ld
    Call:
    lda(G ~ x1 + x2)
    
    Prior probabilities of groups:
      1   2 
    0.5 0.5 
    
    Group means:
         x1   x2
    1  0.92 2.10
    2 -0.38 8.85
    
    Coefficients of linear discriminants:
              LD1
    x1 -0.1035305
    x2  0.2247957
    

    若想用求得的函数预测则使用predict函数:

    >lp<- predict(ld)
    >G1<-lp$class
    >tab1<-table(G,G1)
       G1
    G   1 2
      1 9 1
      2 1 9
    

    可发现正确率为9+9/20=0.9

    相关文章

      网友评论

          本文标题:判别分析及R使用Part1-Fisher判别法

          本文链接:https://www.haomeiwen.com/subject/vmseqdtx.html