数学建模练习题
B题:诊断问题
成员: 毛志坚 (数理学院)
黄 振 (数理学院)
王志鹏 (信传学院)
2010年07月11
摘要
本文将肾炎诊断问题归结为数理统计问题,在问题研究的过程中,建立了BP神经网络模型和费歇尔判别模型,利用神经网络训练得到仿真模型利用表1中前20名肾炎患者和前20名健康人的数据对模型进行求解,提出判别方法,,并采用回代的方法检验模型,确保了模型的正确性。同时引入主成分分析模型,以确定肾炎主要影响因素,最后,我们把用七项检查指标判别结果与简化为主要因数之后的结果进行比较,并提供了改进方案。
关键词: 数理统计 BP网络神经 费歇尔判别模型 主成分分析 Minitab
一、问题重述
人们到医院就诊时,通常要化验一些指标来协助医生的诊断。诊断就诊人员是否患肾炎时通常要化验人体内各种元素含量。表1是确诊病例的化验结果,其中1-30号病例是已经确诊为肾炎病人的化验结果;31-60号病例是已经确诊为健康人的结果。表2是就诊人员的化验结果。我们的问题是:
1. 根据表1中的数据,提出一种或多种简便的判别方法,判别属于患者或健康人的方法,并检验你提出方法的正确性。
2. 按照1提出的方法,判断表B.2中的30名就诊人员的化验结果进行判别,判定他(她)们是肾炎病人还是健康人。
3. 能否根据表1的数据特征,确定哪些指标是影响人们患肾炎的关键或主要因素,以便减少化验的指标。
4. 根据3的结果,重复2的工作。
5. 对2和4的结果作进一步的分析。
(表1,表2 见附录)
二、问题分析
考虑问题的题设和要求:
对于问题1和问题2,我们可以利用BP神经网络进行训练的方法判定就诊者是否患病。将患病者和健康者者的指标进行训练,再建立模拟仿真网络对待测样本进行模拟,从而对就诊者下诊断。在BP神经网络中采用各随机抽取确诊的两类人群中10个样本回带入问题1中所建的仿真网络中来检验模型的正确性。
同时我们费歇尔判别模型,利用神经网络训练得到仿真模型利用表1中前20名肾炎患者和前20名健康人的数据对模型进行求解,提出判别方法。
对于问题3,我们可以通过引入主成分分析模型,确定肾炎主要影响因素,以便减少化验的指标。
三、模型假设
1、假设个别有误差病例对模型的影响可以忽略;
2、假设健康者和患病两类人群的Zn、Cu、Fe、Ca、Mg、K、Na等的期望值、标准差、相关系数与由数据给出的样本的统计量一致,且服从正态分布;
3、假设题目中所给的数据都是真实可信的,且化验过程中没有错误;
4、假设是否患肾炎只与题目中所给的元素的含量有关,与其他元素在人体内的含量没有很大关系;
5、假设人体内各种元素含量对是否患肾炎的影响是相互独立的。
4、 符号说明
:某个病人的7种元素组合;
:某个病人的费歇尔判别函数;
:总体1的协方差矩阵;
:总体2的协方差矩阵;
:总体1的均值向量;
:总体2的均值向量;
:某病人第j种元素的值;
:第i个主成分()。
为1到7之间的数。
:的的协方差矩阵。
:协方差矩阵的特征值。
:为第i个主成分对的组合系数,为为第i个主成分对的组合系数的向量。
:判别临界值;
:为的单位化特征向量。
:第i种元素的判别系数;
:第i个主成分。
五、模型的建立与求解
5、1 问题1和问题2的模型建立与求解
5、11 BP神经网络模型的建立
神经网络是单个并行处理元素的集合,我们从生物学神经系统得到启发。在自然界,网络功能主要有神经节决定,我们可以通过改变连接点的权重来训练神经网络完成特定的功能。
一般的神经网络都是可调节的,或者说是可训练的,这样一个特定的输入便可以得到要求的输出。
人工神经网络系统从20世纪40年代末诞生至今仅短短半个世纪,但由于他具有信息的分布存储,并行处理以及自学能力等有点,已经在信息处理、模式判别、智能控制及系统建模等领域得到越来越广泛的应用。尤其是基于误差反向传播算法的多层前馈网络(简称BP网路),可以以任意精度逼近任意的连续函数,所以广泛应用于非线性建模、函数逼近、模式分类等方面。
BP神经网络的基本结构图如图1所示:
图1 BP神经网络的基本结构图
根据题设,建立BP神经网络模型:
把30个病人与30个健康人的7项指标作为输入项,以60x7的矩阵输入;再以0-1代换的思想,患病看作1,健康看做0,并以1x60的矩阵输入,作为目标输出。对之进行训练,得出结果。
5、12 模型的求解
利用matlab中的神经网络工具箱可以对建立的网络进行训练。
程序如下:
p=[166 15.8 24.5 700 112 179 513;185 15.7 31.5 701 125 184 427;193 9.8 25.9 541 163 128 642;159 14.2 39.7 896 99.2 239 726;226 16.2 23.8 606 152 70.3 218;...
171 9.29 9.29 307 187 45.2 257;201 13.3 26.6 551 101 49.4 141;147 14.5 30.0 659 102 154 680;172 8.85 7.86 551 75.7 98.4 318;156 11.5 32.5 639 107 103 552;...
213 19.1 36.2 2220 249 40.0 168;170 13.9 29.8 1285 226 47.9 330;162 13.2 19.8 1521 166 36.2 133;203 13.0 90.8 1544 162 98.90 394;167 13.1 14.1 2278 212 46.3 134;...
164 12.9 18.6 2993 197 36.3 94.5;167 15.0 27.0 2056 260 64.6 237;158 14.4 37.0 1025 101 44.6 72.5;133 22.8 31.0 1633 401 180 899;156 135 322 6747 1090 228 810];
%输入数据,我们以前十个病人和前十个健康人作为输入数据
t=[ones(1,10) 2*ones(1,10)];%理想输出数据
%将以上每行数据输入打上分号,
[m,n]=size(p);
c=min(p);
d=max(p);
for i=1:m
for j=1:n
p(i,j)=(p(i,j)-c(j))/(d(j)-c(j));
end
end
p=p;%神经网络函数以每列作为输入数据
%完成归一化,用ind2vec函数将t化为0 1的矩阵
t=ind2vec(t);
%初始化网络
net=newlvq(minmax(p),11,[0.5 0.5])%minmax(p)是求p的最大最小值,11代表隐含层的神经元数,[0.5 0.5]前一个0.5代表病人所占输入数据的比列,后一个0.5代表健康人所占输入数据的比列,
net.trainparam.epochs=100;
net.trainparam.goal=0.05;
%设定训练次数及精度要求
net=train(net,p,t);%训练网络
x=[166 15.8 24.5 700 112 179 513;185 15.7 31.5 701 125 184 427;193 9.8 25.9 541 163 128 642;159 14.2 39.7 896 99.2 239 726;226 16.2 23.8 606 152 70.3 218;...
171 9.29 9.29 307 187 45.2 257;201 13.3 26.6 551 101 49.4 141;147 14.5 30.0 659 102 154 680;172 8.85 7.86 551 75.7 98.4 318;156 11.5 32.5 639 107 103 552;...
132 15.9 17.7 578 92.4 1314 1372;182 11.3 11.3 767 111 264 672;186 9.26 37.1 958 233 73.0 347;162 8.23 27.1 625 108 62.4 465;150 6.63 21.0 627 140 179 639;...
159 10.7 11.7 612 190 98.5 390;117 16.1 7.04 988 95.5 136 572;181 10.1 4.04 1437 184 101 542;
146 20.7 23.8 1232 128 150 1092;42.3 10.3 9.70 629 93.7 439 888;...
28.2 12.4 53.1 370 44.1 454 852;154 13.8 53.3 621 105 160 723;179 12.2 17.9 1139 150 45.2 218;
13.5 3.36 16.8 135 32.6 51.6 182;175 5.84 24.9 807 123 55.6 126;...
113 15.8 47.3 626 53.6 168 627;50.5 11.6 6.30 608 58.9 58.9 139;78.6 14.6 9.70 421 70.8 133 464;90.0 3.27 8.17 622 52.3 770 852;178 28.8 32.4 992 112 70.2 169;...
213 19.1 36.2 2220 249 40.0 168;170 13.9 29.8 1285 226 47.9 330;162 13.2 19.8 1521 166 36.2 133;203 13.0 90.8 1544 162 98.90 394;167 13.1 14.1 2278 212 46.3 134;...
164 12.9 18.6 2993 197 36.3 94.5;167 15.0 27.0 2056 260 64.6 237;158 14.4 37.0 1025 101 44.6 72.5;133 22.8 31.0 1633 401 180 899;156 135 322 6747 1090 228 810;...
169 8.00 308 1068 99.1 53.0 289;247 17.3 8.65 2554 241 77.9 373;166 8.10 62.8 1233 252 134 649;209 6.43 86.9 2157 288 74.0 219;182 6.49 61.7 3870 432 143 367;...
235 15.6 23.4 1806 166 68.8 188;173 19.1 17.0 2497 295 65.8 287;151 19.7 64.2 2031 403 182 874;191 65.4 35.0 5361 392 137 688;223 24.4 86.0 3603 353 97.7 479;...
221 20.1 155 3172 368 150 739;217 25.0 28.2 2343 373 110 494;164 22.2 35.5 2212 281 153 549;173 8.99 36.0 1624 216 103 257;202 18.6 17.7 3785 225 31.0 67.3;...
182 17.3 24.8 3073 246 50.7 109;211 24.0 17.0 3836 428 73.5 351;246 21.5 93.2 2112 354 71.7 195;164 16.1 38.0 2135 152 64.3 240;179 21.0 35.0 1560 226 47.9 330];
[m,n]=size(x);
c=min(x);
d=max(x);
for i=1:m
for j=1:n
x(i,j)=(x(i,j)-c(j))/(d(j)-c(j));
end
end
x=x %将将所有的数据归一化当输入数据。
y=sim(net,x);%求输入为x的对应的输出(预测)
y=vec2ind(y);%将0 1变量变为分类数据1、 2类
得到训练图为:
再将30个待测样本以30x7的矩阵形式作为输入项输入,并建立模拟仿真网络对其进行模拟,同时输出样本的目标输出:
表3 待测样本的目标输出
病例号
目标输出
病例号
目标输出
61
1.0353
76
1.0257
62
1.0250
77
-0.0039
63
1.0136
78
-0.0423
64
1.0004
79
0.6702
65
1.0333
80
0.0162
66
0.9327
81
-0.0056
67
0.9787
82
0.0225
68
0.9817
83
0.9886
69
0.9890
84
0.1172
70
0.0104
85
1.0303
71
0.9697
86
-0.0151
72
0.9069
87
1.0193
73
0.9988
88
-0.0066
74
-0.0117
89
0.0145
75
-0.0190
90
0.0939
从表3中可以看出30个待测样本是否患病的情况为:
表4 待测样本是否患病情况表
61
62
63
64
65
66
67
68
69
70
是
是
是
是
是
是
是
是
是
否
71
72
73
74
75
76
77
78
79
80
是
是
是
否
否
是
否
否
疑
否
81
82
83
84
85
86
87
88
89
90
否
否
是
否
是
否
是
否
否
否
疑:表示不能确定是否患病
5、13 模型的检验
我们从原患病者与健康者中随机抽取20个样本为检验数据,以矩阵输入格式代入建立的训练过的模拟真网络,得到目标输出与原结果相符,从而证明了模型的正确性。
5、2 费歇尔(Fisher)判别模型的建立及求解
费歇尔(Fisher)判别是按照各类(总体)中的方差尽可能小,不同类中的均值之间差距尽可能大的原则,即类间距离最大而类内离散性最小的原则求判别函数,并利用判别函数进行最小距离分类。2个总体(总体1和总体2)的基本函数表达为:
式中: 和 分别为总体1和总体2的协方差矩阵;和分别为总体1和总体2的均值向量。
判别规则:
其中:
在此题中总体1就是指肾炎病人,总体2指健康人,X就是每个样本中的7种元素的值构成的一个向量。通过化简,原判别函数就可以转换为 :
其中:为样本中第i种元素的值,为第i种元素的判定系数。
现选取20名肾炎患者和20名健康人的数据作为样本,通过matlab编程求出判定函数的各个判定系数,然后确定判定函数。结果如下:
确定判定临界值。
依据求出的判定函数表达式和判定临界值就得到了一种简单的判定方法,即:根据每个就诊人员中各元素值,计算出判定函数的值,然后将计算出的判定函数的值与判定临界值进行比较,如果判定函数的值大于等于判定临界值,则判定其为患病,否则判定其为健康。
现利用剩下的10名肾炎患者和10名健康人的数据对该费歇尔判别模型进行检验,并计算该判定模型的准确率。计算结果如表1、表2所示。
表1 10名肾炎患者对模型的检验
病例号
21
22
23
24
25
26
27
28
29
30
f(X)
1.598217
1.422755
-0.57788
0.230936
-0.77317
1.464474
0.143876
1.529581
0.609603
1.104563
与d的比较
大于
大于
大于
大于
大于
大于
大于
大于
大于
大于
是否患病
患病
患病
患病
患病
患病
患病
患病
患病
患病
患病
表2 10名健康人对模型的检验
病例号
51
52
53
54
55
56
57
58
59
60
f(X)
-4.39821
-1.80257
-1.62888
-2.17763
-5.43523
-4.37493
-5.10223
-2.8534
-2.26974
-0.71405
与d的比较
小于
小于
小于
小于
小于
小于
小于
小于
小于
大于
是否患病
健康
健康
健康
健康
健康
健康
健康
健康
健康
患病
从表1、表2可以看出在对剩余20人的判定中,仅有1个判定错误,所以该模型的判定正确率高达95%。
根据该判定模型,对30名就诊人员的化验结果进行判别,具体结果如表3所示。
表3 对30组就诊人员进行预测
病例号
61
62
63
64
65
66
67
68
69
70
f(X)
0.411117
-0.62626
-1.1581
0.929443
-0.40762
-1.14984
-2.13477
-0.29227
0.018507
-2.65306
与d的比较
大于
大于
小于
大于
大于
小于
小于
大于
大于
小于
是否患病
患病
患病
健康
患病
患病
健康
健康
患病
患病
健康
病例号
71
72
73
74
75
76
77
78
79
80
f(X)
0.313133
0.9539
0.455611
-1.7666
-0.85532
0.274089
-1.53291
-1.51958
-0.10697
-3.13663
与d的比较
大于
大于
大于
小于
大于
大于
小于
小于
大于
小于
是否患病
患病
患病
患病
健康
患病
患病
健康
健康
患病
健康
病例号
1
2
3
4
5
6
7
8
9
10
f(X)
-4.14866
-2.92481
1.336701
-1.74666
0.675634
-2.3804
-0.75702
-4.1025
-7.368
-1.50392
与d的比较
小于
小于
大于
小于
大于
小于
大于
小于
小于
小于
是否患病
健康
健康
患病
健康
患病
健康
患病
健康
健康
健康
从表3可以看出在对30名就诊人员的化验结果进行的判定中,其中15名就诊人员为肾炎病人,15名就诊人员为健康人。
5、3问题3的模型建立与求解
5、31模型的建立
在样本中的所有指标找到对肾炎诊断影响较大的指标,在此可利用主成分分析的方法进行分析。
主成分分析就是把各变量之间相关联的复杂关系进行简单化的方法。在力求数据信息丢失最少的原则下,对高维的变量空间降维,从而减少其维数,找到主成分的方法,即研究指标体系的少数几个线性组合,且其构成的综合指标应尽可能保留原来指标的信息。这个综合指标即为主成分。
文中有7个指标看作7个随机变量,记为、…,用一个新的指标维数、…,主成分分析就是把7个指标的问题转化为讨论7个线性组合的问题。而这、…按照保留主要信息量的原则充分反映了原指标的信息,且他们相互独立。
即、…满足:
①为、…的线性组合,即
②、…线性无关,它们的协方差为零,即
其中
是、…的一切线性组合中方差最大者,
是与线性无关的、…的一切线性组合中方差最大者,
…
是与、…线性无关的、…的一切线性组合中方差最大者。
即:
记、…为第1、第2、第3、第41、第5、第6、第7主成分。且向量为第i大的特征值所对应的特征向量。
为的协方差矩阵,由,可求出其特征值。
其奉献率
累计奉献率
5、32模型的求解
根据表1的数据,利用Minitab软件输入表1,对Zn, Cu, Fe, Ca, Mg, K, Na七种元素 进行主成份分析,得相关矩阵的特征分析:
特征值 3.1291 1.9735 0.7229 0.5703 0.2836 0.2039 0.1168
比率 0.447 0.282 0.103 0.081 0.041 0.029 0.017
累积 0.447 0.729 0.832 0.914 0.954 0.983 1.000
变量 PC1 PC2 PC3 PC4 PC5 PC6 PC7
Zn 0.256 0.383 0.719 0.455 0.109 0.224 0.043
Cu 0.482 -0.208 -0.157 -0.274 0.163 0.756 0.164
Fe 0.385 -0.139 -0.487 0.746 -0.148 -0.102 0.086
Ca 0.507 0.036 0.170 -0.335 -0.345 -0.441 0.535
Mg 0.532 -0.067 0.067 -0.170 0.098 -0.258 -0.777
K -0.117 -0.609 0.355 0.095 -0.647 0.190 -0.162
Na -0.003 -0.643 0.250 0.108 0.627 -0.267 0.219
其碎石图为:
由此可得到第一主成分贡献率为44.7%,第二主成分贡献率为28.2%,第三主成分贡献率为10.3%,前三个主成分累计贡献率达83.2%,即对其影响大。
如果按80% 以上的信息量选取新因子,则可以选取三个新因子。第一新因子贡献率为44.7%,它的主要代表变量为(Ca),(Mg),其权重系数分别为-0.50744、-0.53169,大于其阀值,反映了这两个变量与是否患病密切相关,第二新因子贡献率次之为28.1%,它的主要代表变量为 (K),(Na)其权重系数分别为—0.609、-0.643,第三新因子信贡献率10.3%,代表变量为(Zn),权重系数为-0.719值。这些代表变量反映了各自对该新因子作用的大小,它们是判别是否患病中最重要的影响因素。因此我们选择Zn,Ca,Mg,K,Na五个指标为影响人们患肾炎的关键因素。
5、4问题4的求解
重复问题1的过程,依据前20名肾炎患者和前20名健康人的数据得到新的判定函数为:
判定临界值为d=-0.21104,用剩下的10名肾炎患者和10名健康人的数据对该费歇尔判别模型进行检验,并计算该判定模型的准确率。计算结果如表4,表5所示。
表4 选取新的指标后10名肾炎患者对模型的检验
病例号
21
22
23
24
25
26
27
28
29
30
f(X)
1.622856
1.366988
-0.36699
0.33135
-0.28631
1.044392
-0.21621
0.813985
1.257566
-0.37118
与d的比较
大于
大于
小于
大于
小于
大于
小于
大于
大于
小于
是否患病
患病
患病
健康
患病
健康
患病
健康
患病
患病
健康
表5 选取新的指标后10名健康人对模型的检验
病例号
51
52
53
54
55
56
57
58
59
60
f(X)
-1.03331
-0.80554
-0.64242
-0.78181
-3.40137
-2.59551
-2.67073
-1.29735
-1.35379
-0.48463
与d的比较
小于
小于
小于
小于
小于
小于
小于
小于
小于
小于
是否患病
患病
健康
健康
健康
健康
健康
健康
健康
健康
健康
从表4、表5可以看出在对剩余20人的判定中,有4个判定错误,所以该模型的判定正确率达80%。所以我们得出结论:在减少了化验指标后,模型的正确率下降了。
根据该判定模型,对30名就诊人员的化验结果进行判别,具体结果表6所示。
表6 选取新的指标后的预测结果
病例号
61
62
63
64
65
66
67
68
69
70
f(X)
1.010108
0.627376
0.477922
1.452376
0.161853
-0.01148
0.242043
0.994902
0.692971
-0.30443
与d的比较
大于
大于
大于
大于
大于
大于
大于
大于
大于
小于
是否患病
患病
患病
患病
患病
患病
患病
患病
患病
患病
健康
病例号
71
72
73
74
75
76
77
78
79
80
f(X)
1.864421
1.489547
0.795372
-0.76593
-0.95345
0.390303
-0.98806
-0.32014
-0.5215
-1.8363
与d的比较
大于
大于
大于
小于
小于
大于
小于
小于
小于
小于
是否患病
患病
患病
患病
健康
健康
患病
健康
健康
健康
健康
病例号
1
2
3
4
5
6
7
8
9
10
f(X)
-2.22245
-1.66468
1.406294
-0.77414
1.233737
-1.31817
0.650579
-1.34248
-2.73572
-1.06872
与d的比较
小于
小于
大于
小于
大于
小于
大于
小于
小于
小于
是否患病
健康
健康
患病
健康
患病
健康
患病
健康
健康
健康
从表6可以看出在对30名就诊人员的化验结果进行的判定中,其中16个就诊人员为肾炎病人,14个就诊人员为健康人。
5、5 两种方案的结果比较与分析
对简化前后的结果进行对比发现,病例号为3、6、7、15、19共5位急诊人员的诊断结果不同,占总人数的83.33%
基于以上两个问题的求解,我们发现主成分分析前后的两个模型各有优缺点。一种需要测量的元素种类较多,但结果相对准确;另一种操作简便,但误差相对较大。因此我们最终得出结论,认为应结合实际情况,在不同情况下使用不同的模型。医疗条件相对较差的医院,可以采用操作简便的模型,医疗条件相对较好的医院因采用准确率较高的模型。在初步诊断的情况下,可以采用测量元素相对较少的模型可以省时省事,在复诊或对准确率较高的情况下,对7种元素进行测量,保证结果的准确率。我们也可以从问题的解决当中发现,其实决定肾炎的指标重要与否就是考虑各个因数对问题的影响大小,所以我们认为完全可以导入权重的概念来解决此类问题。在BP神经网络当中引入权重因子进行训练和模拟仿真。
按照这种思路,模型将会更加完整,更加精确。
六、模型的评价
7、1 优点
a、本文采用的BP神经网络模型正确率高,采用的费歇尔判别模型对总体的分布类型没有要求;
b、模型的计算采用专业的数学软件,可信度较高。
7、2 缺点
a、模型采用数据时精确度不高,导致存在一定误差;
b、假设是否患肾炎只与题目中所给的元素的含量有关,与其他元素在人体内的含量没有很大关系。
八、参考文献
【1】数学建模笔记(BP神经网络,主成分分析)
【2】钟冲,郭强,费歇尔判别法及其应用,西南交通大学学报
【3】齐敏,李大健,郝重阳,模式识别导论 清华大学出版社 2008
【4】中国科技论文在线网,http://www.paper.edu.cn
附录
程序:
clear;
x=[166 15.8 24.5 700 112 179 513;185 15.7 31.5 701 125 184 427;193 9.8 25.9 541 163 128 642;159 14.2 39.7 896 99.2 239 726;226 16.2 23.8 606 152 70.3 218;...
171 9.29 9.29 307 187 45.2 257;201 13.3 26.6 551 101 49.4 141;147 14.5 30.0 659 102 154 680;172 8.85 7.86 551 75.7 98.4 318;156 11.5 32.5 639 107 103 552;...
132 15.9 17.7 578 92.4 1314 1372;182 11.3 11.3 767 111 264 672;186 9.26 37.1 958 233 73.0 347;162 8.23 27.1 625 108 62.4 465;150 6.63 21.0 627 140 179 639;...
159 10.7 11.7 612 190 98.5 390;117 16.1 7.04 988 95.5 136 572;181 10.1 4.04 1437 184 101 542;
146 20.7 23.8 1232 128 150 1092;42.3 10.3 9.70 629 93.7 439 888;...
28.2 12.4 53.1 370 44.1 454 852;154 13.8 53.3 621 105 160 723;179 12.2 17.9 1139 150 45.2 218;
13.5 3.36 16.8 135 32.6 51.6 182;175 5.84 24.9 807 123 55.6 126;...
113 15.8 47.3 626 53.6 168 627;50.5 11.6 6.30 608 58.9 58.9 139;78.6 14.6 9.70 421 70.8 133 464;90.0 3.27 8.17 622 52.3 770 852;178 28.8 32.4 992 112 70.2 169;...
213 19.1 36.2 2220 249 40.0 168;170 13.9 29.8 1285 226 47.9 330;162 13.2 19.8 1521 166 36.2 133;203 13.0 90.8 1544 162 98.90 394;167 13.1 14.1 2278 212 46.3 134;...
164 12.9 18.6 2993 197 36.3 94.5;167 15.0 27.0 2056 260 64.6 237;158 14.4 37.0 1025 101 44.6 72.5;133 22.8 31.0 1633 401 180 899;156 135 322 6747 1090 228 810;...
169 8.00 308 1068 99.1 53.0 289;247 17.3 8.65 2554 241 77.9 373;166 8.10 62.8 1233 252 134 649;209 6.43 86.9 2157 288 74.0 219;182 6.49 61.7 3870 432 143 367;...
235 15.6 23.4 1806 166 68.8 188;173 19.1 17.0 2497 295 65.8 287;151 19.7 64.2 2031 403 182 874;191 65.4 35.0 5361 392 137 688;223 24.4 86.0 3603 353 97.7 479;...
221 20.1 155 3172 368 150 739;217 25.0 28.2 2343 373 110 494;164 22.2 35.5 2212 281 153 549;173 8.99 36.0 1624 216 103 257;202 18.6 17.7 3785 225 31.0 67.3;...
182 17.3 24.8 3073 246 50.7 109;211 24.0 17.0 3836 428 73.5 351;246 21.5 93.2 2112 354 71.7 195;164 16.1 38.0 2135 152 64.3 240;179 21.0 35.0 1560 226 47.9 330];
stdr=std(x); %求各变量标准差
[n,m]=size(x);
sddata= x./stdr(ones(n,1),:); %标准化变换
[p,princ,egenvalue]=princomp(sddata) %调用主成分分析程序
p3=p(:,1:3) %输出前三个主成分系数
sc=princ(:,1:3) %输出前三个主成分得分
egenvalue %输出特征根
per=100*egenvalue/sum(egenvalue) % 输出各个主成分贡献率
表1 确诊病例的化验结果
病例号
Zn
Cu
Fe
Ca
Mg
K
Na
1
166
15.8
24.5
700
112
179
513
2
185
15.7
31.5
701
125
184
427
3
193
9.80
25.9
541
163
128
642
4
159
14.2
39.7
896
99.2
239
726
5
226
16.2
23.8
606
152
70.3
218
6
171
9.29
9.29
307
187
45.5
257
7
201
13.3
26.6
551
101
49.4
141
8
147
14.5
30.0
659
102
154
680
9
172
8.85
7.86
551
75.7
98.4
318
10
156
11.5
32.5
639
107
103
552
11
132
15.9
17.7
578
92.4
1314
1372
12
182
11.3
11.3
767
111
264
672
13
186
9.26
37.1
958
233
73.0
347
14
162
8.23
27.1
625
108
62.4
465
15
150
6.63
21.0
627
140
179
639
16
159
10.7
11.7
612
190
98.5
390
17
117
16.1
7.04
988
95.5
136
572
18
181
10.1
4.04
1437
184
101
542
19
146
20.7
23.8
1232
128
150
1092
20
42.3
10.3
9.70
629
93.7
439
888
21
28.2
12.4
53.1
370
44.1
454
852
22
154
13.8
53.3
621
105
160
723
23
179
12.2
17.9
1139
150
45.2
218
24
13.5
3.36
16.8
135
32.6
51.6
182
25
175
5.84
24.9
807
123
55.6
126
26
113
15.8
47.3
626
53.6
168
627
27
50.5
11.6
6.3
608
58.9
58.9
139
28
78.6
14.6
9.7
421
70.8
133
464
29
90
3.27
8.17
622
52.3
770
852
30
178
28.8
32.4
992
112
70.2
169
31
213
19.1
36.2
2220
249
40.0
168
32
170
13.9
29.8
1285
226
47.9
330
33
162
13.2
19.8
1521
166
36.2
133
34
203
13.0
90.8
1544
162
98.90
394
35
167
13.1
14.1
2278
212
46.3
134
36
164
12.9
18.6
2993
197
36.3
94.5
37
167
15.0
27.0
2056
260
64.6
237
38
158
14.4
37.0
1025
101
44.6
72.5
39
133
22.8
31.0
1633
401
180
899
40
156
135
322
6747
1090
228
810
41
169
8.00
308
1068
99.1
53.0
289
42
247
17.3
8.65
2554
241
77.9
373
43
166
8.10
62.8
1233
252
134
649
44
209
6.43
86.9
2157
288
74.0
219
45
182
6.49
61.7
3870
432
143
367
46
235
15.6
23.4
1806
166
68.8
188
47
173
19.1
17.0
2497
295
65.8
287
48
151
19.7
64.2
2031
403
182
874
49
191
65.4
35.0
5361
392
137
688
50
223
24.4
86.0
3603
353
97.7
479
51
221
20.1
155
3172
368
150
739
52
217
25
28.2
2343
373
110
494
53
164
22.2
35.5
2212
281
153
549
54
173
8.99
36
1624
216
103
257
55
202
18.6
17.7
3785
225
31
67.3
56
182
17.3
24.8
3073
246
50.7
109
57
211
24
17
3836
428
73.5
351
58
246
21.5
93.2
2112
354
71.7
195
59
164
16.1
38
2135
152
64.3
240
60
179
21
35
1560
226
47.9
330
表2 就诊人员的化验结果
病例号
Zn
Cu
Fe
Ca
Mg
K
Na
61
58.2
5.42
29.7
323
138
179
513
62
106
1.87
40.5
542
177
184
427
63
152
0.80
12.5
1332
176
128
646
64
85.5
1.70
3.99
503
62.3
238
762.6
65
144
0.70
15.1
547
79.7
71.0
218.5
66
85.7
1.09
4.2
790
170
45.8
257.9
67
144
0.30
9.11
417
552
49.5
141.5
68
170
4.16
9.32
943
260
155
680.8
69
176
0.57
27.3
318
133
99.4
318.8
70
192
7.06
32.9
1969
343
103
553
71
188
8.28
22.6
1208
231
1314
1372
72
153
5.87
34.8
328
163
264
672.5
73
143
2.84
15.7
265
123
73.0
347.5
74
213
19.1
36.2
2220
249
62.0
465.8
75
192
20.1
23.8
1606
156
40.0
168
76
171
10.5
30.5
672
145
47.0
330.5
77
162
13.2
19.8
1521
166
36.2
133
78
203
13.0
90.8
1544
162
98.9
394.5
79
164
20.1
28.9
1062
161
47.3
134.5
80
167
13.1
14.1
2278
212
36.5
96.5
81
164
12.9
18.6
2993
197
65.5
237.8
82
167
15.0
27.0
2056
260
44.8
72.0
83
158
14.4
37.0
1025
101
180
899.5
84
133
22.8
31.3
1633
401
228
289
85
169
8.0
30.8
1068
99.1
53.0
817
86
247
17.3
8.65
2554
241
77.5
373.5
87
185
3.90
31.3
1211
190
134
649.8
88
209
6.43
86.9
2157
288
74.0
219.8
89
182
6.49
61.7
3870
432
143
367.5
90
235
15.6
23.4
1806
166
68.9
188
展开阅读全文