《肾炎诊断问题》word版.doc
《《肾炎诊断问题》word版.doc》由会员分享,可在线阅读,更多相关《《肾炎诊断问题》word版.doc(21页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
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神经网络算法的补充;它可以
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 肾炎诊断问题 肾炎 诊断 问题 word
限制150内