《《肾炎诊断问题》word版.doc》由会员分享,可在线阅读,更多相关《《肾炎诊断问题》word版.doc(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、肾炎诊断问题孟 华(井冈山大学数理学院)刘 滢(井冈山大学数理学院)梁家堂(井冈山大学信息传媒学院)摘要本文将肾炎诊断归结为数理统计问题,要解决的问题是根据表1的数据,提出一种或多种简便的方法,来判别就诊人员是否患有肾炎。在问题研究的过程中,我们建立了BP神经网络模型和费歇尔判别分析模型,利用神经网络训练得到仿真模型,利用回归法得到判别模型, 将待检测的数据输入模型进行检测,得出结果。同时还使用了费歇尔判别方法,根据原始数据建立一个阈值和判别函数,然后将待检测的数据代入判别函数,与阈值比较得出结果。 对于问题的第三问,要找出检测指标中的关键因素,以减少化验的指标数,我们使用主成份分析的方法对原
2、始数据进行处理,用MATLAB编程的方法实现这个算法,并得出了合理的结果。最后,找出了影响人们患肾炎的关键或主要因素,剔除对其影响不大的其他因素,使用简化后的关键指标对就诊人员再次进行检验,并将其结果与使用七个指标检测的结果相比较,提出该进意见。关键字:BP神经网络模型 仿真模型 费歇尔判别分析模型 主成份分析1.问题的重述人们到医院就诊时,通常要化验一些指标来协助医生的诊断。诊断就诊人员是否患肾炎时通常要化验人体内各种元素含量。表1是确诊病例的化验结果,其中130号病例是已经确诊为肾炎病人的化验结果;3160号病例是已经确定为非肾炎病人的结果。表2是就诊人员的化验结果。我们的问题是:1.根据
3、表1中的数据,提出一种或多种简便的判别方法,判别属于肾炎病人或非肾炎病人的方法,并检验你提出方法的正确性;2.按照1提出的方法,判断表2中的30名就诊人员的化验结果进行判别,判定他(她)们是肾炎病人还是非肾炎病人;3.能否根据表表1的数据特征,确定哪些指标是影响人们患肾炎的关键或主要因素,以便减少化验的指标;4.根据3的结果,重复2的工作;5.对2和4的结果作进一步的分析。2模型的假设与符号说明 2.1模型的假设1.通过表中的七个指标的含量可以判定是否患有肾炎。2.患病者和不患病者的各个指标的期望、标准差、相关系数等由数据给出的样本的统计量是一致的。3.各指标服从正态分布。4.各种元素的含量对
4、肾炎的影响是独立的,不考虑功能的交互作用的影响。5,所给的样本数据无误差。6.忽略就诊人员其他疾病因素及身体素质的差异对检测结果的影响。2.2符号说明i:病例号,从1到90.j:各指标的编号,从1到7表示Zn,Cu,Fe,Ga,Mg,K,Na。p:矩阵表示各病例对应的各指标的数值,即是模型给出的原始数据。:病号i的对应的第j个指标的数值。0:代表不患肾炎。1:代表患肾炎。这两个表示在bp神经网络中应用到。u:特征向量。y: 判别函数。c: 判别阈值。m:总体分成患肾炎和不患肾炎两类,故m=1是患肾炎,m=2是不患肾炎 (在费歇尔算法中用到求样本均值向量) 。:为表中前三十个患有肾炎的病例,=3
5、0。 :为表中后三十个非肾炎的病例,=30.:为各元素的指标总数,=7。3问题的分析3.1对问题一的分析对于问题一要根据表1中的数据进行分析,提出一种或多种简便的判别方法,来辨别就诊的人员属于肾炎病人或非肾炎病人。表1中的七项指标是辨别就诊人员是否得肾炎的依据,由于已经确诊,我们要根据这7个指标的数据分析出患病者和不患病者的区别,经过分析我们提出两种判别方法:BP神经网络模型,费歇尔判别法。利用神经网络训练得到仿真模型,利用回归法得到判别模型,并采用回代和比较f值的方法检验模型,确保了模型的正确性。同时引入逐项回归模型,以确定肾炎主要影响因素。最后,我们把用七项检查指标判断所得的结果与简化为主
6、要因素之后的结果进行比较,并提出了改进方案。利用问题一的方法就可解决问题二。3.2对问题二的分析根据问题一我们已经找到患肾炎病人和不患病者的判别标准,只需要报给表2中的30名就诊病人的数据按照这个标准来检验他们是不是患病就可以了,我们根据BP网络模型的仿真技术来检测这些待诊断病人的各项指标,达到确诊的目的。3.3对问题三的分析对于患者诊断的7项指标中,不可能每项指标都是确诊的关键指标,肯定有一项或多项指标在整个诊断过程中起不到关键的制约作用,检测这些指标达不到我们快速诊断的目的,而且会带来额外的开支。为了减少化验的指标,我们采用了主成分分析的思想对这一问题进行了研究,研究7项指标中哪一项或哪几
7、项对诊断问题起不到制约作用或作用很小,同时找出那些影响化验结果的关键指标,剔除那些对化验结果影响作用很小的指标,减少化验的繁琐程序。3.4对问题四的分析问题四是要求我们在问题三的基础上,进一步对30名就诊人员进行一次检测,即减少了化验指标后我们对病人的检测结果是不是跟我们第一次的结果一致。这个问题中,我们的检测结果可能与第一次检测的结果有出入,但出入要在我们允许的范围内,不然则说明我们的关键指标找的不恰当,这时要求我们要对第三个问题重新讨论和研究。3.5对问题五的分析问题五就是我们要对两次诊断的结果进行分析,对比化验指标减少前与指标减少后的诊断结果的差异。4模型的建立与求解4.1模型一:费歇尔
8、判别法算法步骤1:列出样本观测矩阵p。2:计算出各总体的样本均值及均值向量 (m=1,2)。=(j=1,27)=(,)3:计算出特征向量u。4:写出判别函数。5:求出阈值c6:回代表2中三十名就诊人员的各项指标,算出其y值,与阈值c进行比较,若大于c,则认为是不患病,反之则患病。算法结果1.我们用excel按照上述步骤算出的各样本均值为=108.7167128.6667=8.69216.10067=15.84151.165=499.13331755.133=88.12211.77150.716766.86667410.1667280.82.判别函数的结果是:3.求出的阈值为4回代表二中就诊人员
9、的化验结果到判别函数中,得出的结果与阈值c比较大小。若y大于阈值c,则诊断该就诊人员不患肾炎。若y小于阈值c,则诊断该就诊人员患肾炎。通过计算,我们得出的结果是-343627.8007,-635529.2453,-1603930.589,-522719.3121,-666078.3095,-977922.6493,-572747.6612,-1119238.94,-370756.4242,-2440344.48,-1262751.404,-327312.5583,-300401.4492,-2759320.726,-2016157.82,-819831.2287,-1914689.869,-1
10、907320.954,-1336855.302,-2875764.16,-3751335.872,-2605810.646,-1172996.076,-2048054.783,-1248043.87,-3188168.185,-1454036.403,-2717450.343,-4860462.461,-2264394.102.与阈值比较后,则诊断结果是:0,0,1,0,0,0,0,0,0,1,0,0,0,1,10,1,1,0,1,1,1,0,1,0,1,1,1,1,1则说明就诊人员中病例号为63,70,74,75,77,78,80,81,82,84,86,87,88,89,90的就诊人员患有
11、肾炎。 模型一的正确性检验现在来对上述方法的正确性作必要的检验,即检验上面求出的最优判别函数是否有效。步骤如下:(1) 计算统计量:=16.2525.(2)这里显著性水平=0.005,从F分布表中查出: (3)检验结果:,说明所作出的判别函数是有效的,从而可用来作判别。4.2模型二:BP神经网络模型BP(Back Propagation)网络是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。它的学习规则是使用最速下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方
12、和最小。模型二的建立1.创建一个神经网络,net=newp(pr,s,TF,LF) 其中pr为输入向量的取值范围矩阵,可由MATLAB命令minmax(p)求得,s为神经元的个数,TF传输函数的类型,LF为学习函数,TF 和LF可取默认值,这儿不做深入讨论。2.用模型给定的数据训练神经网络,net,tr=train(net,p,t)其中p为样本的输入数据,t为目标值向量,tr为训练记录。特别说明:t在训练的时候取值是根据我们自己的定义患病与不患病分别用1和0 表示。3.进行仿真。a=sim(net,p)其中p是表2中就诊人员各项指标的数据矩阵,即后面三十名就诊人员的化验数据。模型二的求解见附录
13、二。模型二的正确性检验BP神经网络模型在MATLAB中实现,而且它具有一定收敛性,所以其结果较准确。在此不做详细验证。4.3主成分分析主成分分析计算步骤 计算相关系数矩阵 (1)在()式中,rij(i,j=1,2,p)为原变量的xi与xj之间的相关系数,其计算公式为 (2)因为R是实对称矩阵(即rij=rji),所以只需计算上三角元素或下三角元素即可。 计算特征值与特征向量首先解特征方程,通常用雅可比法(Jacobi)求出特征值,并使其按大小顺序排列,即;然后分别求出对应于特征值的特征向量。这里要求=1,即,其中表示向量的第j个分量。 计算主成分贡献率及累计贡献率主成分的贡献率为累计贡献率为一
14、般取累计贡献率达8595%的特征值所对应的第一、第二,第m(mp)个主成分。 计算主成分载荷其计算公式为 (3)得到各主成分的载荷以后,还可以按照()式进一步计算,得到各主成分的得分 (4)主成分分析的matlab编程方法实现代码实现为:function std=cwstd(p)cwsum=sum(vector,1); %对列求和a,b=size(vector); %矩阵大小,a为行数,b为列数for i=1:a for j=1:b std(i,j)= vector(i,j)/cwsum(j); endendfunction result=cwfac(vector);fprintf(相关系数矩
15、阵:n)std=CORRCOEF(vector) %计算相关系数矩阵fprintf(特征向量(vec)及特征值(val):n)vec,val=eig(std) %求特征值(val)及特征向量(vec)newval=diag(val) ;y,i=sort(newval) ; %对特征根进行排序,y为排序结果,i为索引fprintf(特征根排序:n)for z=1:length(y) newy(z)=y(length(y)+1-z);endfprintf(%gn,newy)rate=y/sum(y);fprintf(n贡献率:n)newrate=newy/sum(newy)sumrate=0;ne
16、wi=;for k=length(y):-1:1 sumrate=sumrate+rate(k); newi(length(y)+1-k)=i(k); if sumrate0.85 break; end end %记下累积贡献率大85%的特征值的序号放入newi中fprintf(主成分数:%gnn,length(newi);fprintf(主成分载荷:n)for p=1:length(newi) for q=1:length(y) result(q,p)=sqrt(newval(newi(p)*vec(q,newi(p); endend %计算载荷disp(result)function pr
17、int=cwprint(p,60,7); %filename为文本文件文件名,a为矩阵行数(样本数),b为矩阵列数(变量指标数)fid=fopen(filename,r)vector=fscanf(fid,%g,a b);fprintf(标准化结果如下:n)v1=cwstd(vector)result=cwfac(v1);cwscore(v1,result);function score=cwscore(vector1,vector2);sco=vector1*vector2;csum=sum(sco,2);newcsum,i=sort(-1*csum);newi,j=sort(i);fpri
18、ntf(计算得分:n)score=sco,csum,j %得分矩阵:sco为各主成分得分;csum为综合得分;j为排序结果主成份分析的结果由程序运行的结果可知,贡献率:newrate = 0.4470 0.2819 0.1033 0.0815 0.0405 0.0291 0.0167主成分数:4主成份有四个,分别是Ca,Zn,Fe,Mg,非主成分是Cu,K,Na,可将其剔除,以减少化验的指标数。4.4减少化验指标后重新诊断重新建立输入数据矩阵,使其包含四个主成份的属性值,利用神经网络模型算法重新做出结果,步骤同上述神经网络模型的步骤,得出的结果是: a=sim(net,p1)a = Colum
19、ns 1 through 18 0,0,1,0,0,1,0,0,0,1,0,0,0,1,1 ,0,1,1 Columns 19 through 30 0,1,1,1,0,1,0,1,1,0,1,15模型的结果分析由于所给出的问题是一个实际问题,为了把它转化为数学问题,我们分别用0和1表示不患肾炎病人和患肾炎病人;针对第一问我们采用了BP神经网络算法,这一算法在计算机上用MATLAB软件便于实现,很容易得出诊断结果。同时出于严谨方面的考虑,我们又采用了费歇尔算法对问题一进行了重新计算,得到了相应的计算结果,不过这一算法相当的复杂,建议读者把它看做一种辅助算法,作为对BP神经网络算法的补充;它可以
20、用来对结果进行检验,以验证BP神经网络算法的正确性。为了模型建立的简便起见,我们并没有考虑化验结果所引起的实际损失,如果附加上这一限制条件重新考虑问题一,则可以用贝叶斯算法,这一算法通过编程可以在计算机上实现。不过我们在用费歇尔算法时,由于编程方面的问题,这一算法不够严谨,没有得到足够理想的结果,建议从新的角度出发考虑问题一,选择一个易于实现的算法,最后通过比较可靠的程序运行出最后结果,以求正确严谨。而在处理问题三时,主成分分析是解决这一问题的首选方法,用它可以得出比较理想的结果,但这一算法的难点是算出各项指标的贡献率后如何确定哪项指标是影响化验结果的关键因素,这一问题还有待我们进行进一步的研
21、究。上述解法算出的结果与实际结果肯定有误差存在,原因是多方面的,首先由60位已经确诊病人的化验数据并不能得到比较可靠的总体数据,也就是说60位病人并不能代表所有病人的情况,从而不能根据对他们的数据的分析来对待检测的30位病人的化验结果进行比较准确的预测;当然模型的选取也会决定计算结果的严谨与否;还有程序是否足够的理想也会决定结果的是否足够的完美等等方面的原因。可以参考对问题一的建议来该进上述各解法,以求结果尽善尽美。6.模型的推广在社会、经济、自然科学领域的研究中,人们经常需要对某一研究对象的一些属性进行观察和研究从而将其进行适当 的归类。例如,一个医生要对病人病情 分析,以便判断到底应该使用
22、何种手段治疗,例如甲型HINI流感与禽流感的治疗方法就不相同。经济管理人员要对产品进行分类,判别它的销售情形属于“畅销”还是滞销。植物学家要对一类植物进行分析,昆虫学家对一种蠓虫的分类判别研究,地质学家要对某一地层出现的岩芯进行分类分析,在上述事例中经常用到的统计手段就是判别分析法。判别分析有多种方法和准则,其中常用的判别分析法主要有:马氏距离按别法、费歇尔判别法、贝叶斯判别法等等7.模型的优缺点优点:1. 本文建立的统计识别模型能有效的解决实际生活中相类似的样本分类的问题,具有较强的实用性和通用性,而且误差也比较小;2. 本文采用的两种判别分析法成功地为诊断肾炎提供了一个科学、合理的方案,具
23、有较高的可信度;3. 求解的过程中采用MATLAB数学软件编程求解,计算过程方便快捷,且结果准确。缺点:1. 在所建立的模型中,对于题目中所提供的少部分就诊人员的化验结果我们并不能做出完全准确的判定断;而且采用改进后的判别函数对就诊人员进行诊断时所得的结果中有几个与原先的判定结果不相同;2. 在肾炎病的诊断过程中如果能综合考虑其他因素对人体内元素含量的影响,将使本文所建立的模型更加贴近于生活实践,更加具有实用价值;同时也能对就诊人员是否患病提供可靠的依据;3. 本文所建立的费歇尔判定模型需要在总体之间差异较大的基础上进行,如果赛总体之间差异不是非常明显时就会影响到最后的判定结果;此外,题中所提
24、到的参考数据有限,这在一定程度上也降低了诊断结果的准确性。参考文献:【1】计量地理学(徐建华 高等教育出版社2005)配套实习指导.【2】宋来忠,王忠明,数学建模与实验,科学出版社,2005.8.【3】蔡锁章,数学建模原理与方法,海洋出版社,2006.6.【4】徐全智,杨晋浩,数学建模(第二版),电子科技大学出版社,2008.6.附录附录一:模型的原始数据表1 确诊病例的化验结果病例号ZnCuFeCaMgKNa116615.824.5700112179513218515.731.570112518442731939.8025.9541163128642415914.239.789699.223
25、9726522616.223.860615270.321861719.299.2930718745.5257720113.326.655110149.4141814714.530.065910215468091728.857.8655175.798.43181015611.532.56391071035521113215.917.757892.4131413721218211.311.3767111264672131869.2637.195823373.0347141628.2327.162510862.4465151506.6321.06271401796391615910.711.7612
26、19098.53901711716.17.0498895.51365721818110.14.0414371841015421914620.723.8123212815010922042.310.39.7062993.74398882128.212.453.137044.14548522215413.853.36211051607232317912.217.9113915045.22182413.53.3616.813532.651.6182251755.8424.980712355.61262611315.847.362653.61686272750.511.66.3060858.958.9
27、1392878.614.69.7042170.81334642990.03.278.1762252.37708523017828.832.499211270.21693121319.136.2222024940.01683217013.929.8128522647.93303316213.219.8152116636.21333420313.090.8154416298.903943516713.114.1227821246.31343616412.918.6299319736.394.53716715.027.0205626064.62373815814.437.0102510144.672
28、.53913322.831.016334011808994015613532267471090228810411698.00308106899.153.02894224717.38.65255424177.9373431668.1062.81233252134649442096.4386.9215728874.0219451826.4961.738704321433674623515.623.4180616668.81884717319.117.0249729565.82874815119.764.220314031828744919165.435.053613921376885022324.
29、486.0360335397.74795122120.115531723681507395221725.028.223433731104945316422.235.52212281153549541738.9936.016242161032575520218.617.7378522531.067.35618217.324.8307324650.71095721124.017.0383642873.53515824621.593.2211235471.71955916416.138.0213515264.32406017921.035.0156022647.9330表2 就诊人员的化验结果病例号
30、ZnCuFeCaMgKNa6158.25.4229.7323138179513621061.8740.5542177184427631520.8012.513321761286466485.51.703.9950362.3238762.6651440.7015.154779.771.0218.56685.71.094.279017045.8257.9671440.309.1141755249.5141.5681704.169.32943260155680.8691760.5727.331813399.4318.8701927.0632.91969343103553711888.2822.612
31、0823113141372721535.8734.8328163264672.5731432.8415.726512373.0347.57421319.136.2222024962.0465.87519220.123.8160615640.01687617110.530.567214547.0330.57716213.219.8152116636.21337820313.090.8154416298.9394.57916420.128.9106216147.3134.58016713.114.1227821236.596.58116412.918.6299319765.5237.8821671
32、5.027.0205626044.872.08315814.437.01025101180899.58413322.831.31633401228289851698.030.8106899.153.08178624717.38.65255424177.5373.5871853.9031.31211190134649.8882096.4386.9215728874.0219.8891826.4961.73870432143367.59023515.623.4180616668.9188附录二:BP神经网络模型算法的MATLAB程序及截图如下: p=16615.824.5700 112 179 5
33、13 18515.731.5701 125184 427 1939.8025.9541 163 128 642 15914.239.7896 99.2239 726 22616.223.8606 152 70.3218 1719.299.29307 187 45.5257 20113.326.6551 101 49.4141 14714.530.0659 102 154 680 1728.857.86551 75.798.4318 15611.532.5639 107 103552 13215.917.7578 92.413141372 18211.311.3767 111 264 672 1
34、869.2637.1958 233 73.0347 1628.2327.1625 10862.4465 1506.6321.0627 140 179639 15910.711.7612 190 98.5390 11716.17.04988 95.5136 572 18110.14.041437184 101 542 14620.723.81232128 1501092 42.310.39.70629 93.7 439 888 28.212.453.1370 44.1 454852 15413.853.3621 105 160 723 17912.217.91139150 45.2 218 13
35、.53.3616.8135 32.6 51.6 182 1755.8424.9807 123 55.6 126 11315.847.3626 53.6 168 627 50.511.66.30608 58.9 58.9 139 78.614.69.70421 70.8 133 464 90.03.278.17622 52.3 770 852 17828.832.4992 112 70.2 169 21319.136.22220249 40.0 168 17013.929.81285226 47.9 330 16213.219.81521166 36.2 133 20313.090.815441
36、62 98.90 394 16713.114.12278212 46.3 134 16412.918.62993197 36.3 94.5 16715.027.02056260 64.6 237 15814.437.01025101 44.6 72.5 13322.831.01633401 180 899 156135 322 67471090 228 810 1698.00308 106899.1 53.0 289 24717.38.652554241 77.9 373 1668.1062.81233252 134 649 2096.4386.92157288 74.0 219 1826.4
37、961.73870432 143 367 23515.623.41806166 68.8 188 17319.117.02497295 65.8 287 15119.764.22031403 182 874 19165.435.05361392 137 688 22324.486.03603353 97.7 479 22120.1155 3172368 150 739 21725.028.22343373 110 494 16422.235.52212281 153 549 1738.9936.01624216 103 257 20218.617.73785225 31.0 67.3 1821
38、7.324.83073246 50.7 109 21124.017.03836428 73.5 351 24621.593.22112354 71.7 195 16416.138.02135152 64.3 240 17921.035.01560226 47.9 330; p0=p; pr=minmax(p0)pr = 1.0e+003 * 0.0135 0.2470 0.0033 0.1350 0.0040 0.3220 0.1350 6.7470 0.0326 1.0900 0.0310 1.3140 0.0673 1.3720 net=newp(pr,1); p0; t=1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1