R语言中的多元统计之判别分析报告

合集下载

多元统计分析及R语言建模(第五版)课件第一二章

多元统计分析及R语言建模(第五版)课件第一二章
注意: apply(B,2,function(x,a) x*a,a=2)与B*2效果相 同,此处旨在说明如何 应用 apply函数。
2 多元数据的数学表达及R使用
数据框(data frame)是一种矩阵形式的数据,但数据框中各列可以是不同类型的数据。 数据框录入限制条件
数 据 框
在数据框中 以变量形式 出现的向量 长度必须一 致,矩阵结 构必须有一 样的行数。
(3);金融(4);工人(5);农民(6);个体 (7);无业(8)。 教育(edu):文盲(1);小学(2);中学(3); 高中(4);中专(5); 大专(6);大学(7);研究生(8)。 投资结果(result):赚钱(1);不赔不赚(2); 赔钱(3)。
2 多元数据的数学表达及R使用
一元数据
2
学习资料
教学教材: 王斌会编著《多元统计分析及R语言建模》
2016.1(第4版)暨南大学出版社
扩充资料: [1]王斌会编著《数据统计分析及R语言编程》
2017.6(第2版) 北京大学出版社,暨南大学出版社
3
多元统计分析及R语言建模
多元统计分析及R语言建模
多元分析基本内容,以及本课程的主要安排。相关的补充
1 多元统计分析概述
R
3
免费的 数据分 析软件
01 功能强大 02 免费,开源
03
前景广阔
1 多元统计分析概述
R
优点
缺点


自由软件,统计功能强大
初学较为麻烦,需一

,可以看作Splus的免费


1 多元统计分析概述
#三窗口排列
#Rstudio界面
语句编程窗口 图形显示窗口

《应用多元统计分析》第四章判别分析实验报告

《应用多元统计分析》第四章判别分析实验报告

《应用多元统计分析》第四章判别分析实验报告第四章判别分析实验报告实验环境Windows xp、Windows vista、Windows 7等,软件SPSS 11.0版本及以上。

实验结果与分析本题中记变量值CF_TD, NI_TA, CA_CL, CA_NS分别为X1,X2,X3,X4 (1)Fisher判别函数特征值EigenvaluesFunction Eigenvalue% of Variance Cumulative %CanonicalCorrelation1.940a100.0100.0.696a. First 1 canonical discriminant functions were used in the analysis.(2)Fisher判别函数有效性检验Wilks' LambdaTest ofFunction(s)Wilks' Lambda Chi-square df Sig.1.51527.8394.000(3)标准化的Fisher判别函数系数Standardized Canonical Discriminant FunctionCoefficientsFunction1CF_TD.134NI_TA.463CA_CL.715CA_NS-.220所以标准化的判别函数为:Y=0.134X1+0.463X2+0.715X3-0.220X4得出Y=0.9012(4)未标准化的Fisher判别函数系数Canonical Discriminant Function CoefficientsFunction1CF_TD.629NI_TA 4.446CA_CL.889CA_NS-1.184 (Constant)-1.327 Unstandardized coefficients所以为标准化的费希尔判别函数为:Y=-1.327+0.629X1+4.446X2+0.889X3-1.184X4得出Y=-0.1703(5)组重心处的费希尔判别函数值Functions at Group CentroidsG Function11.8692-1.035 Unstandardized canonical discriminant functions evaluated at group means各类重心在空间中的坐标位置。

多元统计分析及R语言建模(第五版)课件第六七章

多元统计分析及R语言建模(第五版)课件第六七章
对于“噪声”和孤立点是敏感的,这种数据对均值影响极大
7 聚类分析及R使用
关于变量变换
平移变换 极差变换 标准差变换 主成分变换 对数变换
7 聚类分析及R使用

(1)计算n个样品

两两间的距离




(5)确定类的

个数和样品名称
(2)构造n个类, 每类包含1个样品
(4)绘制 系统聚类图
(3)合并距离 最近两类为新类
(4)计算新类与各 类距离,若类个数为 1,转到第5步,否则
回到第3步
例7-1数据的系统聚类 最短距离法(采用欧氏距离)
例7-1数据的系统聚类
概 念 和 原 理
7 聚类分析及R使用
【例7.3】kmeans算法的R语言实现及模拟分析:模拟正态随机变量
7 聚类分析及R使用
7 聚类分析及R使用
模拟10个变量2000个样品的正态随机矩阵
7 聚类分析及R使用
系统聚类分析的特点 综合性 形象性 客观性
关于kmeans算法 kmeans算法只有在类的均值被定义的情况下才能使用
功能评分为7.5, 销售价格为65百元, 问该厂产品的销售前景如何?
6 判别分析及R使用
6 判别分析及R使用
1. 线性判别(等方差)
[1] 0.9
6 判别分析及R使用
6 判别分析及R使用
2. 二次判别(异方差)
[1] 0.95
6 判别分析及R使用
6.4.1 Bayes判别准则 Fisher判别缺点 一是判别方法与各总体出现的概率无关 二是判别方法与错判后造成的损失无关 Bayes判别准则
多元统计分析及R语言建模
第6章 判别分析及R使用

多元统计分析r代码-2

多元统计分析r代码-2

多元统计分析r代码-2#图2.1马氏距离例rm(list=ls())x=seq(from=-5,to=10,by=0.01)y1=dnorm(x,0,1) #计算密度y2=dnorm(x,4,2) #计算密度plot(x,y1,type="l",xlab="", ylab="",axes=F,xlim=c(-5,10), ylim=c(0,0.4))lines(x,y2,type="l")axis(2)rect(-5.8, 0, 10, 0.4)rect(0, 0, 0, 0.4)rect(1.658, 0, 1.658, 0.1)rect(4, 0, 4, 0.2)text(1.658,-0.01,expression(A),cex=1)text(0,-0.008,expression(0),cex=0.9)text(4,-0.01,expression(4),cex=1)#例2.1x<-c(1,1,3,4,2,0,1,2,3,5); dim(x)<-c(5,2)d<-dist(x)hc1<-hclust(d, "single"); hc2<-hclust(d, "complete")hc3<-hclust(d, "average"); hc4<-hclust(d, "ward")opar <- par(mfrow = c(2, 2))plot(hc1,hang=-1); plot(hc2,hang=-1)plot(hc3,hang=-1); plot(hc4,hang=-1)par(opar)dend1<-as.dendrogram(hc1)opar <- par(mfrow = c(2, 2),mar = c(4,3,1,2))plot(dend1)plot(dend1, nodePar=list(pch = c(1,NA), cex=0.8, lab.cex = 0.8),type = "t", center=TRUE)plot(dend1, edgePar=list(col = 1:2, lty = 2:3), dLeaf=1, edge.root = TRUE)plot(dend1, nodePar=list(pch = 2:1,cex=.4*2:1, col = 2:3), horiz=TRUE)par(opar)#例2.2## 输入相关矩阵.x<- c(1.000, 0.846, 0.805, 0.859, 0.473, 0.398, 0.301, 0.382,0.846, 1.000, 0.881, 0.826, 0.376, 0.326, 0.277, 0.277,0.805, 0.881, 1.000, 0.801, 0.380, 0.319, 0.237, 0.345,0.859, 0.826, 0.801, 1.000, 0.436, 0.329, 0.327, 0.365,0.473, 0.376, 0.380, 0.436, 1.000, 0.762, 0.730, 0.629,0.398, 0.326, 0.319, 0.329, 0.762, 1.000, 0.583, 0.577,0.301, 0.277, 0.237, 0.327, 0.730, 0.583, 1.000, 0.539,0.382, 0.415, 0.345, 0.365, 0.629, 0.577, 0.539, 1.000)names<-c("身高 x1", "手臂长 x2", "上肢长 x3", "下肢长 x4", "体重 x5","颈围 x6", "胸围 x7", "胸宽 x8")r<-matrix(x, nrow=8, dimnames=list(names, names))## 作系统聚类分析,## as.dist()的作用是将普通矩阵转化为聚类分析用的距离结构.d<-as.dist(1-r); hc<-hclust(d); dend<-as.dendrogram(hc)## 写一段小程序, 其目的是在绘图命令中调用它, 使谱系图更好看. nP<-list(col=3:2, cex=c(2.0, 0.75), pch= 21:22,bg= c("light blue", "pink"),lab.cex = 1.0, lab.col = "tomato")addE <- function(n){if(!is.leaf(n)) {attr(n, "edgePar") <- list(p.col="plum")attr(n, "edgetext") <- paste(attr(n,"members"),"members") }n}## 画出谱系图.op<-par(mfrow=c(1,1), mar=c(4,3,0.5,0))de <- dendrapply(dend, addE); plot(de, nodePar= nP)par(op)#分成三类的程序和计算结果plclust(hc, hang=-1); re<-rect.hclust(hc, k=3)#例2.3续例1.2,海南板块的股票数据read.csv("hn-2.csv",header=T)->DAr<-DA[,2:12]/doc/bd16977641.html,s<-DA[,1]X<-data.frame(r, /doc/bd16977641.html,s)HN<-dist(scale(r))hc1<-hclust(HN, "complete")hc2<-hclust(HN, "average")hc3<-hclust(HN, "centroid")hc4<-hclust(HN, "ward")opar<-par(mfrow=c(2,2), mar=c(5.2,4,0,0),cex=0.8) plclust(hc1,hang=-1)re1<-rect.hclust(hc1,k=5,border="red")plclust(hc2,hang=-1)re2<-rect.hclust(hc2,k=5,border="red")plclust(hc3,hang=-1)re3<-rect.hclust(hc3,k=5,border="red")plclust(hc4,hang=-1)re4<-rect.hclust(hc4,k=5,border="red")par(opar)#例2.4动态聚类km <- kmeans(HN, 5, nstart = 20); kmsort(km$cluster)。

《多元统计实验》判别分析实验报告三

《多元统计实验》判别分析实验报告三

《多元统计实验》判别分析实验报告cbind(类别,newG,Z$post,Z$x)#合并原分类、回判分类回判后验概率及判别tab=table(类别,newG)#原分类和新分类列表比较tabsum(diag(prop.table(tab)))prenew=predict(ld,newdata=newdata)prenew#对三个待判样本进行判定cbind(prenew$class,prenew$post,prenew$x)#也可以按列合并在一起看二、实验结果分析5.5进行Fisher判别分析.若一位新客户的8个指标分别为(2 500, 1 500, 0,3, 2,3, 4, 1),试对该客户的信用度进行评价.以上输出结果中包括了lad()所用的公式、先验概率1、2、3、4、5 为:0.2941176 、0.1176471 、0.1764706 0.1764706 、0.2352941,各组均值向量、线性判别函数的系数。

输出所有分类组由输出结果可知第十二号样品为第四组的被误判给了第五组,且与距离判别法结果一致,最后对新客户的8个指标(2500,1500,0,3,2,3,4,1)进行判定。

说明:由$class可以看出该新用户被判入第一组,结果与距离判别法一致,对应的后验概率决定该新用户的归类组。

因此该新用户的信用度评价为一。

5.6试对表5-7中的数据进行Bayes判别分析并对8个待判样品的类别进行判定.由上结果可知,两个组别为一的被误判为第二组,第二组的三个被误判为第一组。

出现5个误判结果正确率为:0.9411765,误判错误的概率仍然较低。

Bayes判别法对八个待测样本的判定结果为:四个判给第一组,四个判给第二组,且Bayes 判别法是采用了新的后验概率,而不是先验概率。

因此判出概率相同。

统计分析及R语言建模(判别分析)

统计分析及R语言建模(判别分析)

(1.5)
这里称W (X) 为两总体距离判别的判别函数,由于它是 X 的线性
函数,故又称为线性判别函数, α 称为判别系数。
在实际应用中,总体的均值和协方差矩阵一般是未知的,可由样
本均值和样本协方差矩阵分别进行估计。设
X(1) 1
,
,
X(1) n1
来自总

G1
的样本,
X(2) 1
,
,
X(2) n2
是来自总体
值个分总别体是。1和 2,对于一个新的样品X,要判断它来自哪 一般的想法是计算新样品X到两个总体的马氏距离D2(X,
G1)和D2(X,G2),并按照如下的判别规则进行判断
这GXX2个的判距GG别离12,,规之则差如如的,果果等如价果描其DD述22值((XX为为,,G:G正11求)),新XDD属样22(于(品XXG,X,GG2到;22))G否1的则距X(属离1于与.3G)到1。
所谓判别分析法就是在已知分类的条件下, 一旦遇到新的样品,可以利用此法选定判 别标准,以判定将该新样品放置于哪个类 中。
判别分析的理论基础是根据观测到的某些 指标的数据,对所研究的对象建立判别函 数,并进行分析的一种多变量分析方法。
判断分析按判别的总体数来区分,有两个总体判 别分析和多总体判别分析;
按区分不同总体所用的数学模型来分,有线性判 别和非线性判别;
按判别时所处理变量方法不同,有逐步判别和序 贯判别等。
判别分析可以从不同角度提出问题,因此有不同 的判别准则,如马氏距离最小准则、Fisher准则、 平均损失最小准则、最小平方准则、最大似然准 则、最大概率准则等等,按判别准则的不同又提 出多种判别方法。
我们考虑
D2 (X, G1) D2 (X, G2 )

R语言版应用多元统计分析对应分析

R语言版应用多元统计分析对应分析

应用多元统计分析第8章 对应分析- 1-对应分析(Correspondence Analysis)是在因子分析的基础上发展起来的一种视觉化的数据分析方法,目的是通过定位点图直观地揭示样品和变量之间的内在联系。

R型因子分析是对变量(指标)进行因子分析,研究的是变量之间的相互关系;Q型因子分析是对样品作因子分析,研究的是样品之间的相互关系。

但无论是R型或Q型分析都不能很好地揭示变量和样品之间的双重关系。

而在许多领域错综复杂的多维数据分析中,经常需要同时考虑三种关系,即变量之间的关系、样品之间的关系以及变量与样品之间的交互关系。

法国学者苯参次(J.P.Benzecri)于1970年提出了对应分析方法,这个方法对原始数据采用适当的标度化处理,把R型和Q型分析结合起来,通过R型因子分析直接得到Q型因子分析的结果,同时把变量和样品反映到同一因子平面上,从而揭示所研究的样品和变量之间的内在联系。

在因子分析中,R型因子分析和Q型因子分析都是从分析观测数据矩阵出发的,它们是反映一个整体的不同侧面,因而它们之间一定存在内在联系。

对应分析就是通过某种特定的标准化变换后得到的对应变换矩阵Z将两者有机地结合起来。

具体地,就是首先给出变量的R型因子分析的协方差阵 和样品的Q型因子分析的协方差阵 。

由于矩阵 和 有相同的非零特征值,记为 ,如果 的对应于特征值 的标准化特征向量为 ,则容易证明, 的对应于同一特征值的标准化特征向量为当样本容量n很大时,直接计算矩阵 的特征向量会占用相当大的容量,也会大大降低计算速度。

利用上面关系式,很容易从 的特征向量得到 的特征向量。

并且由 的特征值和特征向量即可得到R 型因子分析的因子载荷阵A和Q型因子分析的因子载荷阵B,即有由于 和 具有相同的非零特征值,而这些特征值又是各个公因子的方差,因此设有p个变量的n个样品观测矩阵 ,这里要求所有元素 ,否则对所有数据同时加上一个适当的正数,以使它们满足以上要求。

多元统计第五章判别分析

多元统计第五章判别分析
第五章 判别分析
第一节 引言
在我们的日常生活和工作实践中,常常会遇到判别分析问题。
案例一:为了研究中小企业的破产模型,选定4个经济指标:总负债率、
收益性指标、短期支付能力、生产效率性指标。对17个破产企业(1类)和21
个正常运行企业(2类)进行了调查,得关于上述四个指标的资料。现有8个 未知类型的企业的四个经济指标的数据,判断其属于破产企业一类还是正 常运行企业一类? 案例二:根据经验,今天与昨天的湿度差x1及今天的压温差x2 (气压与温度
ˆ Σ
1 A , n 1
1,2,, k
三、判别分析的实质
设R1,R2,…,Rk是p维空间R p的k个子集,如果它们互
不 相交,且它们的和集为R p,则称R1,R2, …,Rk为R p的一 个划分。
在 两 个 总 体 的 距 离 判 别 问 题 中 , 利 用
W (X) (X μ)' α 可以得到空间 R p 的一个划分 R1 {X : W ( X) 0} R2 {X : W ( X) 0}
x2
-0.41 -0.31 0.02 -0.09 -0.09 -0.07 0.01 -0.06 -0.01 -0.14 -0.3 0.02 0 -0.23 0.05 0.11 -0.08 0.03 0 0.11 -0.27
x3
1.09 1.51 1.01 1.45 1.56 0.71 1.5 1.37 1.37 1.42 0.33 1.31 2.15 1.19 1.88 1.99 1.51 1.68 1.26 1.14 1.27
Σ 的一个联合无偏估计为
n
n2 1 和 X(2) Xi(2) n2 i 1 1 ˆ Σ ( A1 A2 ) n1 n2 2
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

前言判别分析(discriminant analysis)是多元统计分析中较为成熟的一种分类方法,它的核心思想是“分类与判断”,即根据已知类别的样本所提供的信息,总结出分类的规律性,并建立好判别公式和判别准则,在此基础上,新的样本点将按照此准则判断其所属类型。

例如,根据一年甚至更长时间的每天的湿度差及压差,我们可以建立一个用于判别是否会下雨的模型,当我们获取到某一天(建立模型以外的数据)的湿度差及压差后,使用已建立好的模型,就可以得出这一天是否会下雨的判断。

根据判别的组数来区分,判别分析可以分为两组判别和多组判别。

接下来,我们将学习三种常见的判别分析方法,分别是:•距离判别•Bayes判别•Fisher判别一、距离判别基本理论假设存在两个总体和,另有为一个维的样本值,计算得到该样本到两个总体的距离和,如果大于,则认为样本属于总体,反之样本则属于总体;若等于,则该样本待判。

这就是距离判别法的基本思想。

在距离判别法中,最核心的问题在于距离的计算,一般情况下我们最常用的是欧式距离,但由于该方法在计算多个总体之间的距离时并不考虑方差的影响,而马氏距离不受指标量纲及指标间相关性的影响,弥补了欧式距离在这方面的缺点,其计算公式如下:,为总体之间的协方差矩阵二、距离判别的R实现(训练样本)首先我们导入数据# 读取SAS数据> library(sas7bdat)> data1 <- read.sas7bdat('disl01.sas7bdat')# 截取所需列数据,用于计算马氏距离> testdata <- data1[2:5]> head(testdata,3)X1 X2 X3 X41 -0.45 -0.41 1.09 0.452 -0.56 -0.31 1.51 0.163 0.06 0.02 1.01 0.40# 计算列均值> colM <- colMeans(testdata)> colMX1 X2 X3 X4 0.096304348 -0.006956522 2.033478261 0.431739130 # 计算矩阵的协方差> cov_test <- cov(testdata)> cov_testX1 X2 X3 X4 X1 0.068183816 0.027767053 0.14996870 -0.002566763 X2 0.027767053 0.015363865 0.05878251 0.001252367X3 0.149968696 0.058782512 1.01309874 0.028607150X4 -0.002566763 0.001252367 0.02860715 0.033912464# 样本的马氏距离计算> distance <- mahalanobis(testdata,colM,cov_test)> head(distance,5)[1] 12.726465 11.224681 1.692702 1.347885 2.369820这样,我们得到了距离判别中最关键的马氏距离值,在此基础上就可以进行进一步的判别分析了。

不过我们介绍一个R的第三方包WMDB,该包的wmd()函数可以简化我们的距离判别过程,函数将输出样本的分类判别结果、错判的样本信息以及判别分析的准确度。

> library(WMDB)> head(data1,3)A X1 X2 X3 X41 1 -0.45 -0.41 1.09 0.452 1 -0.56 -0.31 1.51 0.163 1 0.06 0.02 1.01 0.40# 提取原始数据集的A列生成样品的已知类别> testdata_group <- data1$A# 转换为因子变量,用于wmd()函数中> testdata_group <- as.factor(testdata_group)> wmd(testdata,testdata_group)1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27blong 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 1 1 1 2 1 1 1 1 2 2 228 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46blong 2 2 2 2 2 2 1 2 2 2 1 1 1 1 1 2 1 2 2 [1] "num of wrong judgement"[1] 15 16 20 22 23 24 34 38 39 40 41 42 44[1] "samples divided to"[1] 2 2 2 1 1 1 1 1 1 1 1 1 1[1] "samples actually belongs to"[1] 1 1 1 2 2 2 2 2 2 2 2 2 2Levels: 1 2[1] "percent of right judgement"[1] 0.7173913由分析结果可知,根据已知分类的训练样品建立的判别规则,重新应用于训练样品后,出现了13个错判样品,拥有71.7%的准确度。

三、距离判别的R实现(测试样本)接着,当我们获取到未分类的新样本数据时,使用wmd()函数,在训练样本的基础上进行这些数据的距离判别# 导入数据,一共10个样本> data2 <- read.sas7bdat('disldp01.sas7bdat')# 截取所需列数据> newtestdata <- data2[1:4]# 进行判别分析> wmd(testdata,testdata_group,TstX = newtestdata)1 2 3 4 5 6 7 8 9 10blong 1 1 1 1 1 1 2 2 2 1根据马氏距离判别分析得到的结果,10个待判样品中,第一类7个,第二类3个。

距离判别方法简单实用,它只要求知道总体的数字特征,而不涉及总体的分布,当总体均值和协方差未知时,就用样本的均值和协方差矩阵来估计,因此距离判别没有考虑到每个总体出现的机会大小,即先验概率,没有考虑到错判的损失。

因此,我们进一步学习贝叶斯判别法。

一、贝叶斯判别基本理论贝叶斯判别法的前提是假定我们已经对所要分析的数据有所了解(比如数据服从什么分别,各个类别的先验概率等),根据各个类别的先验概率求得新样本属于某类的后验概率。

该算法应用到经典的贝叶斯公式,该公式为:假设有两个总体和,分别具有概率密度函数和,并且根据以往的统计分析,两个总体各自出现的先验概率为和,当一个样本发生时,求该样本属于某一类的概率,计算公式为:这样,我们得到了该样本属于两类总体的概率,分别为和,属于哪一类总体的概率值大,我们则将样本划分到该类中。

二、贝叶斯判别的R实现在R中,我们使用klaR包中的NaiveBayes()函数实现贝叶斯判别分析,函数调用公式如下:> NaiveBayes(formula, data, ..., subset, na.action = na.pass)# formula指定参与模型计算的变量,以公式形式给出,类似于y=x1+x2+x3# na.action指定缺失值的处理方法,默认情况下不将缺失值纳入模型计算,也不会发生报错信息,当设为“na.omit”时则会删除含有缺失值的样本# 数据准备,使用R内置数据集iris# 通过抽样建立训练样本(70%)和测试样本(30%)> index <- sample(2,size = nrow(iris),replace = TRUE,prob = c(0.7,0.3))> train_data <- iris[index == 1,]> test_data <- iris[index == 2,]# 载入所用包> library(klaR)# 构建贝叶斯模型> Bayes_model <- NaiveBayes(Species ~ ., data = train_data)# 进行预测> Bayes_model_pre <- predict(Bayes_model, newdata = test_data[,1:4]) # 生成实际与预判交叉表> table(test_data$Species,Bayes_model_pre$class)setosa versicolor virginicasetosa 20 0 0versicolor 0 17 0virginica 0 3 7从上表生成的交叉表中,我们可以看到在该模型中错判了3个。

# 生成预判精度> sum(diag(table(test_data$Species,Bayes_model_pre$class)))+ / sum(table(test_data$Species,Bayes_model_pre$class))[1] 0.9361702三、Fisher判别基本理论Fisher判别法的基本思想是“投影”,将组维的数据向低维空间投影,使其投影的组与组之间的方差尽可能的大,组内的方差尽可能的小。

因此,Fisher判别法的重点就是选择适当的“投影轴”。

判别函数为,接下来我们以两类总体举例。

首先我们将样本点投影到一维空间,旋转坐标轴至总体单位尽可能分开的方向,此时分类变量被简化为一个,判别函数;如果划分的效果不理想,可以考虑投影到二维空间(),以此类推。

上图为二维空间的Fisher判别,从图中可以看到,无论我们把总体和投影到还是轴,都不能很好的把两类总体区分出来。

为此,我们需要寻找一条合适的投影线,使得两类总体向该线投影后的区分程度达到最大,线性判别函数即为该投影线的表达形式(这里我们仅介绍Fisher判别的基本原理,不涉及参数的具体推导和求解,这些都可用R程序求得)。

四、Fisher判别的R实现在R中,我们使用MASS包中的lda()函数实现Fisher判别分析,函数调用公式如下:> lda(formula, data, ..., subset, na.action)# formula:指定参与模型计算的变量,以公式形式给出,类似于y=x1+x2+x3 # na.action:指定缺失值的处理方法,默认情况下,缺失值的存在使算法无法运行,当设置为“na.omit”时则会删除含有缺失值的样本# 数据准备,使用R内置数据集iris# 通过抽样建立训练样本(70%)和测试样本(30%)> index <- sample(2,size = nrow(iris),replace = TRUE, prob = c(0.7,0.3)) > train_data <- iris[index == 1,]> test_data <- iris[index == 2,]# 载入所用包> library(MASS)# 构建Fisher判别模型> fisher_model <- lda(Species~., data = train_data)# 进行预测> fisher_model_pre <- predict(fisher_model, newdata = test_data[,1:4]) # 生成实际与预判交叉表> table(test_data$Species,fisher_model_pre$class)setosa versicolor virginicasetosa 20 0 0versicolor 0 14 1virginica 0 0 18# 生成预判精度> sum(diag(table(test_data$Species,fisher_model_pre$class)))+ / sum(table(test_data$Species,fisher_model_pre$class))[1] 0.9811321五、Fisher判别进阶——非线性判别在判别分析的实际应用中,对复杂的数据使用线性判别可能无法得到理想的效果。

相关文档
最新文档