文章期号:20190604
第二章统计进阶,多元统计:判别分析
“数据时代的到来了,一个数据小白也可以炼成动植物学家” ,你是不是惊讶之余带着一丝不屑嗤之以鼻呢?先放下你的小脾气,预留10分钟的时间,我带你探索真真相,耐心看完全文:
文章目录:
1,动植物学家的定义和工作内容
2,数据小白挑战动物植物学家
3,盖棺定论
1,动植物学家的定义和工作内容
什么是动植物学家呢?
植物学家,研究植物的形态、分类、生理、生态、分布、发生、遗传、进化等的科学家。动物学家,研究动物的生理、分类、生态、动物驯化等等。
动植物学家的主要工作是什么呢?
从动植物学家的定义 可知动物植物学家们的主要工作是分类,分类的过程可以简单的描述为:动植物数据的收集,动植物数据的整理,动植物数据的观察,种族内部相似特征的抽取,种族间差异特征的归纳,然后结论的检验,在重新数整理数据,不断迭代的研究过程。
2,数据小白挑战动物植物学家
数据小白为什么不能做动植物的分类工作吗?
2.1,挑战第一项工作:新捕捉A001类昆虫分辨:是雌性?还是雄性呢?
第一步:我们收集A001类昆虫历史的样本数据,分成雌性一组为:G1,雄性一组为:G2。我们本着组内找相似,组间找差异的原则:我们观察G1和G2两种昆虫的体长和翅长存在显著的差异,于是我们测量各组每一只昆虫的体长:m,翅长:n,二元组合(m,n);
计算整理:雌性昆虫的标准值, 雄性性昆虫的标准值,两组共同的协方差分别如下:

新昆虫测量:体长为:7.2,翅长为:5.6:

到此,数据对照之下,你是不是有自己的答案了呢?为严谨一些我们需要进一步计算:俗话有云:“近朱者赤,近墨者黑”,测量新昆虫到两组距离的远近,我们就可以做一些靠谱的判断,这里采用马氏距离计算公式:

计算结果为:-0.053<0, 所以 新昆虫离组G2更近,判断新昆虫为雄性。
不要为计算骚挠:R工具快速完成:
> W2equal = function(x, mu1, mu2, S){(mahalanobis(x, mu2, S) - mahalanobis(x,mu1,S))/2}
> mu1=c(6,5); mu2=c(8,6); S = matrix(c(9,2,2,4),nrow=2);x=c(7.2,5.6)
> W2equal(x, mu1,mu2, S)
[1] -0.053125由结果 -0.053125 小于 0,所以判别这是一只雄性昆虫。
2.2,挑战第二项工作:一束鸢尾花的品种?
R工具种自带有著名的名鸢尾花(iris)数据,3个品种鸢尾花数据各有50行数据,
每一行数据包括:(花萼长度, 花萼宽带,花瓣长度,花瓣宽度,品种)
四种特征对应一个品种,四种特征我们可以相信成四维空间中的点,四维是什么鬼,顿时凌乱了,稳住我们能赢:我们是不是可以转换看问题的角度,抓住重点,将四维变三维,再将三位变成二维呢?
举个例子:将二维转成一维线性,图中红,蓝表是不同种类的数值点,无论我们从垂直于横轴(x)的角度,还是从垂直纵轴(y)的角度我们无法好好的将红,蓝两个种类分开,当我们反复不断调整角度时,惊喜的发现从垂直直线(z)的角度去看,红蓝的数值点在直线(z)上的分布存在明显的差异(距离)。我们可以完美的将 二维的点降为到了一条直线上。同理:我们也可以将更高维的数据降维,换一个角度看问题,其实问题没有那么复杂,也许我们和专家的差距就在一个角度上。这也是著名的fisher判别的思想,转换角度长称为一种投影:

运用fisher的判别算法,我们鸢尾花(iris)数据进行投影,将四个因素转成两个主因素,训练主因素判别的效果,如果效果好,我们就有信心,有把握判别一束鸢尾花的品种,了解思想很重要,计算的工作就交给我们的伟大的计算机吧。
R:软件中自带著名鸢尾花(iris)数据:
通过投影方法画出了模型图(三个品种鸢尾花的模型图:


> data(iris)
> attach(iris)
> library(MASS)
> ld = lda(Species~Sepal.Length+
Sepal.Width+Petal.Length+Petal.Width)
> ld
> Z = predict(ld)
> newG = Z$class
> cbind(Species, newG, Z$x)
> tab = table(newG, Species)
> tab
Species
newG setosa versicolor virginica
setosa 50 0 0
versicolor 0 48 1
virginica 0 2 49
> plot(ld)> plot(fit_lda1,dimen=1)
#data_test 表示一组新花数据,预测判别
predict(ld,data_test) pre_ldal[1:length(ld)]
由结果可知,对原始150个数据的预测中,由3个判别错误,误差率为2%,我们
很有信心的拿新模型判别一束花的品种

read.table(pipe("pbpaste"),sep='\t',header=T)->data
data
G x1 x2
1 1 24.8 -2.0
2 1 24.1 -2.4
3 1 26.6 -3.0
....
attach(data)
library(MASS)
ld=lda(G~x1+x2, prior=c(6,8)/14)
ld
Call:
lda(G ~ x1 + x2, prior = c(6, 8)/14)
Prior probabilities of groups:
1 2
0.4285714 0.5714286
Group means:
x1 x2
1 25.31667 -2.416667
2 22.02500 -1.187500
Coefficients of linear discriminants:
LD1
x1 -0.6312826
x2 1.0020661
> Z<-predict(ld)
> newG=Z$class
> cbind(G, newG, Z$x)
G newG LD1
1 1 1 -1.1475545
2 1 1 -1.1064831
3 1 1 -3.2859294
> tab = table(G, newG)
> sum(diag(prop.table(tab)))
[1] 0.9285714
> Z$post
1 2
1 0.9386546174 6.134538e-02
2 0.9303445828 6.965542e-02
.....3,盖棺定论
随着社会的发展,计算机技术的不断革新,我们的原有的工作界限被打破了,数据的在不同的领域的作用越来越强烈,一个优秀的数据工作者的价值越来越重要,他们的跨界能力随着数据量和处理数据的能力在不断的增强,我们有理由相信一个不关心数据价值的工作者将会被“数据的时代”淘汰,拥抱数据,拥抱变化,迎接新的一天。