高分论文分析方法—判别分析原理及R语言实现

判别分析做的好的话能提高论文质量,挖掘数据最大的价值,为论文加分。判别分析(discriminat analysis)他要解决的问题是在一些已知研究对象已经用某种方法分成若干类的情况下,确定新的样品属于已知类别中的哪一类。如已知健康人和冠心病人的血压、血脂等资料,以此建立判别函数,对新样品分类进行预测。在模式识别领域(比如人脸识别,舰艇识别等图形图像识别领域)中有非常广泛的应用。判别分析在处理问题时,通常要给出一个衡量新样品与各已知类别接近程度的描述统计模型,即判别函数,同时也需要指定一种判别规则,以判断新样品的归属。判别规则可以是确定性的也可以是统计性的分别对应Fisher判别和Bayes判别。今天明明同学给大家讲讲《判别分析原理及R语言实现》。

目录:

  1. 线性判别分析
  2. 距离判别分析
  3. 二次判别分析
  4. Bayes判别分析

1、线性判别分析

提出:

最早由fisher(1936)提出,用于花卉分类上,将花卉的各种特征(如花瓣长与宽,花萼长与宽等)利用线性组合方法变成单变量值,再以单值比较方法来判别事物间的差别。

示例:

以两类判别为例说明。设有两类样品,分别为n1,n2个样品,各测得p个指标,观察值如下表所示。

高分论文分析方法—判别分析原理及R语言实现

可以预设线性判别函数为Y = a1X1+ a2X2+……+ apXp = a'X 。使得该判别函数能根据指标X1,X2,XP 之值区分各样品归属哪一类。

步骤:

1、 求Fisher线性判别函数(Fisher线性判别准则要求各类之间的变异尽可能地大,而各类内部的变异尽可能地小,变异用离均差平方和表示)

2、 计算判别界值(求的ai后,代入判别函数式即得判别函数)

3、 建立判别标准

下面举例说明R语言实现过程。

例1:根据经验,今天和昨天气温差x1和x2是预报明天下雨或不下雨的两个重要因子,实验记录如下表格,试问,今天测得x1=8.1,x2=2.0,明天应该预报下雨还是晴天?

高分论文分析方法—判别分析原理及R语言实现

R语言中进行线性判别得函数为lda()

形式如下:

lda(formula , data,……)

formula和上次明明同学介绍的回归分析中的形式一样。

Data为数据框。

1、首先把数据加载到R语言中 ,然后画出数据散点图,初步观察数据分布。

高分论文分析方法—判别分析原理及R语言实现

R语言代码

高分论文分析方法—判别分析原理及R语言实现

原始数据散点图

2、建立判别函数

高分论文分析方法—判别分析原理及R语言实现

R语言代码

3、用训练的判别函数对源数据进行检测

高分论文分析方法—判别分析原理及R语言实现

R语言代码

由结果可知,两类中分别有一个判别错误,判对的共有18对。判对率为18/20=90%

4、构造混淆矩阵,求出判对率

高分论文分析方法—判别分析原理及R语言实现

R语言代码

由这个结果也可以看出,判对率为90%。求出的判别函数为y=-0.1035x1+0.2248x2 。

画出分类线为:

高分论文分析方法—判别分析原理及R语言实现

两类判别分类线

5、对新数据进行预测

高分论文分析方法—判别分析原理及R语言实现

R语言代码

由结果可以看出,当x1 = 8.1 , x2 = 2.0 时,明天天气分类为1,即明天天气为下雨。

把新点添加到图层,查看可视化效果,图中箭头指向的黑色点就是新点。也可以看出,该点落在有雨的类别中。

高分论文分析方法—判别分析原理及R语言实现

新点加入原始图直观观察分类

2、距离判别分析

距离判别的基本思想:

根据已知分类的数据,分别计算各类的重心,即各组的均值。距离判别的准则是:对任给的一次观测,若它与第i类的重心距离最近,就认为它来自第i类。通常采用马氏距离进行判别。

判别标准:

设有两总体G1、G2,从第一个总体中抽取n1个样品,从第二个总体中抽取n2个样品,对每个样品测量P个指标。任取一个样品实测指标为X =(x1,x2,…… ,xp)'。分别计算样品X到总体G1、G2的距离D(X , G1)和D(X , G2),按距离最近准则判别归类。即:

高分论文分析方法—判别分析原理及R语言实现

在R语言中利用WeDiBaDis包可以实现加权马氏距离判别分析。

下面举例说明R语言实现过程。

从市场上随机抽取了20中牌子的电视机进行调查。按照电视机的质量评分、功能评分、销售价格以及销售情况(共两种,畅销和滞销)进行如下统计。

现有一新厂商来推销其产品,质量评分8.0,功能评分7.5,售价65百元。该厂商的场景如何?

高分论文分析方法—判别分析原理及R语言实现

R语言实现过程:

1)载入数据,分析数据呈现方式

高分论文分析方法—判别分析原理及R语言实现

R语言代码

高分论文分析方法—判别分析原理及R语言实现

质量和功能散点图

高分论文分析方法—判别分析原理及R语言实现

质量和售价散点图

高分论文分析方法—判别分析原理及R语言实现

功能和售价散点图

2)、导入WeDiBaDis包,建立马氏距离模型。使用WDBdisc ()函数建立模型。

WDBdisc函数结构为:

WDBdisc(data, datatype, classcol, new.ind, distance, type, method)

Data: 一个训练数据矩阵或者训练数据距离矩阵。

Datatype:如果数据是数据矩阵,则datatype = "m",如果数据是距离矩阵,则datatype = "d"。

Classcol:分类变量所在的列,默认为第一列。

new.ind:为测试数据,可选参数,如果需要测试新数据的话需要加上。

distance: 判别分析采用的距离方法。默认为欧式距离。可选"correlation" , "Bhattacharyya", "Gower", "Mahalanobis", "BrayCurtis", "Orloci", "Hellinger"or "Prevosti"。

type: 如果距离为"Gower"距离,则需要该参数。该参数是一个列表。

Method:判别分析采用的方法,为"DB" 或者"WDB",默认为"WDB"。

高分论文分析方法—判别分析原理及R语言实现

R语言代码

高分论文分析方法—判别分析原理及R语言实现

判别结果

由此可见训练结果可知,类别1有两个判错的,类别2有一个判错的,判对率为85%。

新数据代入模型,判断新类别的分类。

高分论文分析方法—判别分析原理及R语言实现

预测结果

由预测结果可知,新类别所属分类为1,即新厂商推广的产品为畅销,新厂商前景比较乐观。

3、二次判别分析

当多总体之间的协方差矩阵不相同时,距离判别函数为非线性形式,一般为二次函数。R语言中用MASS包里的qda()函数来建立模型。

qda()函数书写形式和lda一样,这里明明同学简单略过。你们可以回头看看线性判别函数lda()书写。

本次还以距离判别的数据为例,用二次判别建立模型,看看模型判对率。

高分论文分析方法—判别分析原理及R语言实现

R语言代码

结果如下:

高分论文分析方法—判别分析原理及R语言实现

二判别结果

高分论文分析方法—判别分析原理及R语言实现

原始数据和预测数据对比结果

高分论文分析方法—判别分析原理及R语言实现

判对率

由此可见,我们给定的20个样本训练数据训练的模型全部判对。判对率为100%。由此可见应用二次判别比马氏距离判别效果好。

4、 Bayes判别分析

前面讲的几种判别分析方法计算简单,结果明确,比较实用。但是存在两个缺点,

一是判别方法与总体各自出现的概率大小完全无关二是判别方法与错判后造成的损失无关,这些都不尽合理。Bayes判别则是很好的考虑了这两个因素而提出的一种判别方法。

我们还以二次判别分析的例子用bayes建模。

1、 假设先验概率相等,即q1=q2=1/2,此时判别函数等价于fisher线性判别函数。

高分论文分析方法—判别分析原理及R语言实现

先验概率相等的R语言代码和判别结果

2、 先验概率不一样,取q1=13/20 , q2=7/20,然后建立bayes判别函数

高分论文分析方法—判别分析原理及R语言实现

先验概率不相等的R语言代码和判别结果

由于我们样本数据少的原因,本结果中无论是先验概率一样还是先验概率不一样的bayes判别都对本实验数据完美的进行了判别。判别结果好过马氏距离判别分析。

由于篇幅有限,本文关于各种判别函数的建立与推导并没有写出,希望大家自己查看资料学习。学习更多R语言数据分析使用技巧、EXCEL和PPT制作教程请查看历史文章

有任何问题可以私信明明同学,帮助你解决数据分析,PPT制作,论文做图、以及高质量图片处理的难处。


分享到:


相關文章: