数模化验结果判别与matlab程序文档格式.docx
《数模化验结果判别与matlab程序文档格式.docx》由会员分享,可在线阅读,更多相关《数模化验结果判别与matlab程序文档格式.docx(17页珍藏版)》请在冰豆网上搜索。
表B.1是确诊病例的化验结果,其中1-30号病例是已经确诊为肾炎病人的化验结果;
31-60号病例是已经确定为健康人的结果。
表B.2是就诊人员的化验结果。
1.根据表B.1中的数据,提出一种或多种简便的判别方法,判别属于患者或健康人的方法,并检验你提出方法的正确性。
2.按照1提出的方法,判断表B.2中的30名就诊人员的化验结果进行判别,判定他(她)们是肾炎病人还是健康人。
3.能否根据表B.1的数据特征,确定哪些指标是影响人们患肾炎的关键或主要因素,以便减少化验的指标。
4.根据3的结果,重复2的工作。
5.对2和4的结果作进一步的分析。
2问题分析
问题解决的关键是如何正确判断正常人与患者之间的差异,利用所给数据,可以选择用医学统计方法[1]中的判别分析法[2]进行分析。
从题目给出的表中可以得出以下信息:
1)表中分别给出正常人与患者各30组数据,每组数据各包含7种元素(Zn、Cu、Fe、Ca、Mg、K、Na)在人体中的含量。
通过对这些数据进行分析,可以从中找出数据差异,根据判别法确定判别标准。
利用所得判别标准,与就诊人员的化验结果比较可以判别其是否患有肾炎;
2)采用某医院化验的30名健康人和30名肾炎患者体的7种微量元素的含量作为基础数据,从中选取20名健康人和20名肾炎患者的数据作为样本,进行采样分析,建立判定模型,并利用剩余的10名健康人和10名患者对判定模型进行正确率检验,即可得到判定模型的正确率。
3)利用不同的判别法,用Matlab软件编程对数据进行处理,得到相应判别标准。
将就诊人员数据与判别值比较,即可对就诊人员是否患病做出明确判断。
这样就解决了第二问;
4)在第一问基础上利用EXCEL将各元素比重进行作图分析,即可直观地确定各种元素的权重,从而筛选出关键因素。
这样就解决了第三问;
5)在第四问中将第三问得出的关键元素对应的数据的在判别程序中保留,其余元素的数据删除。
再利用Matlab软件对就诊人员数据进行处理,判断其是否患病。
6)在第五问中,将第二问与第四问所得结果进行直观比较,观察其差异进行详细分析。
3模型假设
1)表中所给数据全部正确;
2)除表中所给元素外,其它元素对肾炎的影响甚小;
3)外界条件对肾炎患者影响不计。
4符号说明
注:
约定0表示正常人,1表示患者,例如x0表示正常人数据。
A:
患者矩阵
B:
正常人矩阵
S1:
患者离差矩阵
S2:
正常人离差矩阵
:
正常人数据代表,即均值
患者数据代表,即均值
组A代表(平均值的判别值)
组B代表(平均值的判别值)
正常人数据协方差矩阵
患者数据协方差矩阵
患者数据马氏距离定义
正常人样本马氏距离定义
Fisher判别模型临界值
马氏距离判别模型判别函数
5模型建立
该问题的关键是如何判别一个人是否患有肾炎,属于分类问题,可以采用统计方法中的判别分析方法进行处理。
题目只需区分病体和健康体,所以可以采用二类群体判别的方法。
可选取判别模型中的Fisher判别模型、马氏距离判别模型和BP神经网络分类模型进行研究。
5.1不等协差阵的两总体Fisher判别模型[2][3]
5.1.1基本思想
从两个总体中抽取具有p个指标的样品观测数据,借助方差分析的思想造一个判别函数或称判别式:
y=c1x1+c2x2+…+cpxp
其中系数c1,c2,…,cp确定的原则是使两组间的区别最大,而使每个组部的离差最小。
有了判别式后,对于一个新样品,将它的p个指标值代入判别式中求出y值,然后与判别临界值(或称分界点后面给出)进行比较,就可以判别它应属于哪一个总体。
5.1.2建立过程
将患者与正常人数据分别表示成矩阵如下:
算出两组数据的代表,即平均值:
(正常人均值)(患者均值)
其中,j=1,…,7。
做新的矩阵A1,B1及两组数据的离差矩阵S1,S2如下:
则有:
最优判别函数的系数C1,C2,…,C7为下述方程组的解:
即:
可以写出判别函数:
(S-1)
算出两组数据平均值的判别值:
则临界值为:
故若将待测样本值代入S-1式得出相应y值,可得出如下判别结果:
1)时,若,则判别该对象患病,属于组A;
若,则判别该对象正常,属于组B;
2)时,若,则判别该对象正常,属于组B;
若,则判别该对象患病,属于组A.
5.2马氏距离判别模型[2]
5.2.1基本思想
首先根据已知分类的数据,分别计算各类的中心即分组(类)的均值。
判别准则是对任给的一次观测,若它与第i类的中心距离最近,就认为它来自第i类。
5.2.2建立过程
设,,,分别为A、B的均值向量和协方差阵。
距离定义采用马氏距离,即:
根据问题要求,将G0对应于正常人数据组B,将G1对应于患者数据组A。
首先计算X到A、B两个总体的距离,分别记为和,按距离最近准则判别归类,则可写成:
记,则有:
然后比较和的大小,按距离最近准则判别归类。
若正常人与患者数据的协方差相同,由得到判别函数为:
其中,判别标准是
若正常人与患者数据的协方差不同,即,则定义判别函数:
5.3BP神经网络分类模型[1][5]
5.3.1基本思想
基于误差反向传播(Backpropagation)算法的多层前馈网络(Multiple-layerfeedforwardnetwork,简记为BP神经网络),是目前应用最成功和广泛的人工神经网络(如下图所示),它基于信息的正向传播和误差的反向回馈来训练整个BP神经网络,使得输出层误差的平方和达到最小。
5.3.2建立过程
为避免变量各指标数值间差异太悬殊,而导致小数值被大数值所淹没,首先利用premnmx函数对各样本数据进行归一化处理,归一化处理后其值分布在[-1,1]区间。
然后将表B1的正常人和患者数据作为训练样本对网络进行学习训练,网络训练结束后,输入待判样本数据,即可通过网络获得判别结果。
6模型检验
6.1利用Fisher判别法的模型检验[3]
代入数据可得出下列结果:
=-0.0108,=-0.1515,=-0.0812。
进行判别函数的检验,检验其是否有效:
计算统计量,其中,p为向量维数,p=7:
给定显著水平a=0.05,从F分布表中查出:
所作出的判别函数有效
6.2三种判别法的正确率检验
采用某医院化验的30名健康人和30名肾炎患者体的7种微量元素的含量作为基础数据,从中选取20名健康人和20名肾炎患者的数据作为样本,进行采样分析,分别建立了马氏距离判定模型、费歇尔(Fisher)判定模型和BP神经网络分类模型3种判定模型,并利用剩余的10名健康人和10名患者对判定模型进行检验,得到3种判定模型的正确率如下:
实际结果
11111111110000000000
正确率
Fisher判别程序输出结果
11111111110000000001
95%
马氏距离判别程序输出结果
11010111100000000000
85%
BP神经网络分类模型判别结果
实际输出值
0.99910.99990.50700.91590.97470.99960.07611.00000.99980.73410.00010.00320.00230.00550.00090.00080.00110.00160.00210.0118
判定值
11111101110000000000
对于BP模型而言,输出向量是以0、1为标准对样本进行分类,趋近于0分为“0”类,趋近于1的划分为“1”类
由上表可见,正确率都达到85%以上,故建立模型正确有效。
7模型求解
根据已建立的模型,利用Matlab软件进行编程求解,对B2中30名就诊人员化验结果判断结果如下:
马氏距离判别模型判别结果:
110101000011000100000010100000
Fisher判别模型判别结果:
110111011011101100100010100000
BP神经网络分类模型判别结果(数据已进行分类处理):
111110011011100000000010101000
其中,BP神经网络分类模型判别结果误差分析图如下:
8模型结果分析
8.1对问题三解决
数学期望表示样本的平均值,通过正常人与患者各元素含量的期望差的绝对值与正常人的期望之比大小表示各元素对总体结果的影响程度。
比值越大,表明该元素对诊断结果的决定性作用越大。
将各比值进行归一化处理得到图表如下:
通过图表观察发现,首先由于K的比例值比较突出,即可选择单独对K利用程序进行对样本测试,记得测试方案A;
其次,Ca的比值也相对较高,也选择可对Ca和K进行测试,即得测试方案B;
最后,Mg和Fe相当,故可选择Fe、Ca、Mg、K为主要元素进行测试,可得测试方案C。
8.2对问题四的解决
根据问题三所得测试方案,利用M软件求解如下:
Fisher判别模型判别结果
方案A
110100010011000000000011000000
方案B
111111111011100100100011101000
方案C
马氏距离判别模型判别结果
111101110011011110110111101010
110111111011100100000010000000
110111001011000100000010000000
111100010011000000000011001010
110100011011100000000011001000
111111011011100000000011001000