判别分析及R使用Part3-贝叶斯判别

2022-12-22  本文已影响0人  3between7

先回顾下贝叶斯定理:
P(A|B) = \frac{P(B|A)P(A)}{P(B)}

Bayes判别准则

在这里我不想讨论复杂的数学公式,因为我还没搞明白,直接跳到在R语言中怎么用吧!例子还是之前的例子:

表6.3.png
20个电视机,5种畅销,8种平销,7种滞销,试建立判别函数,当一新产品其质量评分为8.0,功能评分为7.5,销售价格为65元,问该厂产品的销售前景如何?用起来其实很简单,还是用lda()函数,使用prior参数指定先验概率即可:
> library(MASS)
> d6.3 <- read.xlsx("/home/my/桌面/MOOC/多元统计分析/mvstats5.xlsx",sheet="d6.3")
> d6.3
     Q   C  P G3
1  8.3 4.0 29  1
2  9.5 7.0 68  1
3  8.0 5.0 39  1
4  7.4 7.0 50  1
5  8.8 6.5 55  1
6  9.0 7.5 58  2
7  7.0 6.0 75  2
8  9.2 8.0 82  2
9  8.0 7.0 67  2
10 7.6 9.0 90  2
11 7.2 8.5 86  2
12 6.4 7.0 53  2
13 7.3 5.0 48  2
14 6.0 2.0 20  3
15 6.4 4.0 39  3
16 6.8 5.0 48  3
17 5.2 3.0 29  3
18 5.8 3.5 32  3
19 5.5 4.0 34  3
20 6.0 4.5 36  3
> attach(d6.3)
> ld42 <- lda(G3~Q+C+P,prior=c(5,8,7)/20)
> ld42
Call:
lda(G3 ~ Q + C + P, prior = c(5, 8, 7)/20)

Prior probabilities of groups:
   1    2    3 
0.25 0.40 0.35 

Group means:
         Q        C      P
1 8.400000 5.900000 48.200
2 7.712500 7.250000 69.875
3 5.957143 3.714286 34.000

Coefficients of linear discriminants:
          LD1         LD2
Q -0.81173396  0.88406311
C -0.63090549  0.20134565
P  0.01579385 -0.08775636

Proportion of trace:
   LD1    LD2 
0.7403 0.2597 
> Z1 <- predict(ld42)
> T1 <- table(G3,Z1$class)
> T1
   
G3  1 2 3
  1 5 0 0
  2 1 6 1
  3 0 0 7
> sum(diag(T1))/sum(T1)  ##计算正确率
[1] 0.9
> predict(ld42,data.frame(Q=8,C=7.5,P=65)) ##预测
$class
[1] 2
Levels: 1 2 3

$posterior
          1        2           3
1 0.2114514 0.786773 0.001775594

$x
        LD1        LD2
1 -1.537069 -0.1367865

小结

本章最后教授给出了总结:

  1. 判别分析方法是按已知所属组的样本确定判别函数,制定判别规则,然后再判断每一个新样品应属于哪一类。
  2. 常用的判别方法有Fisher判别、距离判别、贝叶斯判别等,每个方法根据其出发点不同各有其特点。
  3. Fisher类判别对判别变量的分布类型并无要求,而Bayes类判别要变量的分布类型。因此,Fisher类判别较Bayes类判别简单一些。
  4. 当两个总体时,若它们的协方差矩阵相同,则距离判别和Fisher判别等价。当变量服从正态分布时,它们还和Bayes判别等价。
  5. 判别分析中的各种误判的后果允许看作是相同的,通常将犯第一类错误的后果看得更严重些,但本章对此关注的不够。
上一篇 下一篇

猜你喜欢

热点阅读