1、血样的分组化验摘要本问题所述的情况在医学统计、病毒检测等诸多问题中是首要解决的问题。进行某种疾病的调查,需要大量的统计数据,而统计数据的取得主要靠实验的方法,这时候,我们就要考虑如何让分组使得我们处理问题的效率提高,花销最少,本文就是以找出最优分组为主要目的。首先解决的是在阳性先验概率 p 固定情况下建立一个概率模型使化验次数最小的问题,我们设平均每人检验次数的函数为 f(x),然后通过非线性方程数值解法对其求解,找到是化验次数最小的每组人数;接着要解决的是阳性先验概率 p 为多大时,就不应该再分组;再接下来,解决二次分组(即阳性组再分组检验)的问题,我们采用非线性规划模型利用 LINGO 软
2、件求使化验次数最少的最优解;最后通过平均概率模型讨论其它类型的血样分组情况。关键字:概率模型 非线性方程数值解法 非线性规划 平均概率模型一、问题提出要在人群中(数量很大)找出某种病患者,为减少检验次数,通常采用筛选的办法。即假设人群总数为 n, 将人群分成 m 组,每组的人数为 k,将每组的 k 份血样混在一起进行化验,若化验结果呈阳性,则需要对该组的每个人重新进行化验,以确定患者;若化验结果呈阴性,则表明该组全体成员均为阴性,不需要重新化验。 (1)已知先验阳性率为 p,,当 p 固定时,如何分组可使得化验次数最小; (2)找出不必分组的先验阳性率 p 的取值范围;(3)讨论两次分组的情况
3、,即检测为阳性的组再次分组检验的情况;(4)讨论其它分组方案,如半分法、三分法,这里我们采用平均概率模型进行分组。二、基本假设血样的检验结果只存在阴性和阳性两种结果 , 即阴性与阳性的先验概率之和为1 , 即p+q=1;假设先验概率 是对某个人检验一次,结果呈阳性的概率,并假设先验概率p在检验中保持不变(即假设该概率 只与疾病有关,而对同一种疾病该值为常p量) ;用来抽样的随机人群相互独立(即不考虑是否有遗传性与病毒的传染); 为了简化模型,假设能够平均分配,进行再分组的时候,对呈阳性的组进行内分组。三、 符号说明 人群总数第一次分组的组数 第一次分组每组人数 第二次分组的组数 第二次分组每组
4、人数先验阳性概率先验阴性概率为一次分组每人的化验次数的最小值第一次分组每人的化验次数第二次分组每人的化验次数x 1()第一次分组的平均每个人化验次数 的数学期望X()第二次分组平均每个人化验次数 的数学期望X1 第一次检验中化验为阳性的组数2 第二次分组后的组数3 第二次化验后得到的阳性组数的期望值1 第一次分组的化验次数2 第二次分组后第一步化验的次数3 第二次化验结束后的化验次数 总共需要化验的次数四、 问题分析1.问题一分析设人群总数为 ,分为 组,每组的人数为 )。设阳性的先验 (2 2概率为 p,则阴性的先验概率为 q=1-p。如果不进行分组,则每个人都需要化验 1 次。如果分组,当
5、某组化验结果为阴性时,则不需再进行化验,又因为每个人是否是感染者是相互独立的,故该组平均每个人的化验次数为 ,概率为1kqk;若某组化验结果是阳性,则需要对该组的每个人进行化验,该组平均每个人的化验次数为 1+ ,概率为 1-qk。因此,需要分组的条件是第一次分组化验1k次数的数学期望小于 1。要求化验次数的数学期望的最小值,就是要求在满足数学期望小于 1 的情况下的每组人数 。2.问题二的分析不应分组的条件就是要求阳性的先验概率 某一范围内,使分组后平均每个人化验次数的数学期望大于 1。3.问题三的分析在第一次分组化验的基础上结果显示为阳性的组再次进行分组化验。对于第一次分组化验为阳性的组,
6、重新分为 组,每组 人。以二次分组时每个人 的平均检验次数为目标,建立非线性规划模型,取不同的 ,求出第一次分组的最佳分组人数 和第二次分组的最佳分组人数 。 4.问题四的分析我们引入平均概率模型,把血样检验中可能出现的情况进行细化分析,最后得出,在实际情况当中,我们可以近似认为当血样检验位阳性的人数等于分组后每一组的人数时,可以使得我们的模型达到很好的优化。五、模型建立与求解1、模型一的建立与求解(问题一和问题二)1模型的建立由以上分析我们可以得出随机变量X 的分布律为: 1 1+ 1由此可以算出 X 的数学期望为:()=1+1+ (1)=1+1即一次分组每人的化验次数的数学期望。又因为阳性
7、的先验概率p是固定的,故而是求当k是多少时此期望值为最小值,并且E(X)值不能超过1。=(1+1)1+11 2在 时取得最大值。=画出P(x)的图像如下:又因为 k 是离散的,只能取整数,故 k 取 3 时,P(x)取得最大值P(3)=0.3066 故由 ,也就是只有在 p 0.3066 时,1- 10.3066 调整 k 的值总能满足 。即此时分一次组才比不分组每人平均检1- 1验次数少。而对于大于此值的 p,并不满足 ,因而不分组比分一1- 1次组平均每人检验次数少。对 f( x) = 1 qx+ ( x 2, 0 q 1)求导可得:1 ()=-12=0 如果对于给定的 (必须满足约束条件
8、 p 0.3066)值,可以通过=1- 非线性方程数值解法求得 f(x)最小的 xm值。由于本题变量(每组人数)均为离散变量,故取与 最相近的两个整数值(上取整和下取整)x a(xa xm),xb(xb xm),代入 ,比较两个值,其中较小的那个值即为只分一次组总次数最 ()少的 k 值。下表即为对应不同的先验概率,相应的最小检验次数的每组人数:p0.00001 0.00003 0.00005 0.00008 0.0001 0.0005 0.001317 183 142 112 101 45 32()EX0.0063 0.0109 0.0141 0.0178 0.0200 0.0448 0.0
9、6280.005 0.01 0.02 0.03 0.04 0.05 0.08k15 11 8 6 6 5 4()EX0.1391 0.1956 0.2742 0.3337 0.3839 0.4262 0.5336p 0.10 0.20 0.30 0.306 0.3066 0.308 0.4k4 3 3 3 3 3 3()0.5939 0.8213 0.9903 0.9990 1.0005 1.0020 1.1173由此可以看出当 p0.3066 时,E (x )1, 所以分组可以减少检验的工作量,并且能够达到减小检验费用的目的。从上面的 E(x)p 图像可以分析出:平均每个人的检验次数随 的增
10、大而增大。p因此,当阳性的先验概率 增大时,进行再次分组可以减小检验的次数,达到p降低检验费用的目的。从上面的 Kp 图像我们可以看出:从整体上看,最佳分组人数随 的增大而呈p现先急剧减小,后趋于水平的趋势。当 时,最佳分组人数随着阳性0.5p先验概率的增大而急剧减小,当 ,最佳分组人数几乎不变,结合.54图 1,当 增大到一定程度而继续增大时, ,分组反而增加了检验费p()1EX用,故而没有必要在进行分组了。2、二次分组(即阳性组再分组检验)的情况1.模型假设(1)在进行第二次分组时,将第一次分组时检验为阳性的组的 k 个人分为 m组是随机的;(2)第二次分组时,阳性的先验概率仍然为 p2.
11、模型建立与求解第一次分组化验:第一次分组组数为 m,所以化验需要的化验次数为次 ,这 m 组中,化验出阳性的组数应为: 组。再给阳1y 1()kxp性组进行第二次分组化验。我们把化验出为阳性的归为一类,以前的 个人随机分为 组,每组 人,km所以有 。k第二次化验:通过以上的分组方法,可以得到的总小组数为: 组,21x故第二次化验需要的次数 次。21yxm第二次分组化验时,若检验出某组为阴性,表明该组全体成员全为阴性,不需要重新化验,如为阳性,需要对该组的每个人进行化验,以确定谁是病毒感染者。第二次化验后得到的阳性组数的期望值为: 组,每321()kxp组的人数为 人。所以再需要的化验次数 次
12、。k 32()ky所以要进行两次分组,总共需要的化验次数 y 为:1231()1()1()kkkyympmpp又由于总人数 ,所以可得平均每人需要的化验次数数学模型为:nki()()()kkEXk1:(stm为 正 整 数 )0p令 E(x)=E(x)可以得出 时取 K ,代入式子可以得出 。4k 29.0p由此可见,只要所给的 值小于 0.2929(而且满足假设(4) ) ,分两次组就比分一次组要好。使用 LINGO 编程(见附件)求出当 P 在(0.00001,0.40)之间变化满足以上条件的最优解,下面给出几组有代表性 、 、 、 :pk()EXp0.005 0.01 0.02 0.03
13、 0.04 0.05 0.08k42 24 14 12 10 10 514 12 7 6 5 5 5()EX0.0502 0.0839 0.1391 0.1855 0.2289 0.271 0.3844p0.1 0.2 0.3 0.306 0.307 0.308 0.4k6 3 3 3 3 3 33 3 3 3 3 3 3()0.4498 0.7341 0.984 0.9985 1.0009 1.0033 1.2093根据上面表分析得:当 , 可以进行两次分组,分组能够减小平0.7p()1EX均每个人的化验次数,当 , ,分组反而增加了平均每个人的3化验次数。3.结果分析血样分组检验的方式不同
14、,就会导致检测次数的不同,在实践情况当中,我们会对检测的方式进行分析,得出最合适的方式。下面我们来分析一次分组检验与二次分组检验平均检验次数与 的关系:p当阳性的先验概率 时,不分组每个人一次一次的检验可以使总306.次数最少;当所给 时,进行一次检验比分二次组和不分组均306.29.0p可使总次数最少;当 时,分两次组总次数比分一次组总次数要少。.由于题给条件是人群数量很大,基本是健康人,所以可以认为先验概率很小,不分组的情况在实际当中可以不予考虑(此时的概率 在 0.3 左右,p p相当大) ,故而我们可以认为当 时,二次分组更好。0.37p综上所述,当 时, ,即一次分组血样化验的平均检
15、0.37p()EX验次数大于二次分组血样化验的平均化验次数,因此一次分组化验的费用比两次分组化验的费用要大,在实际的血样分组化验过程中,应该选择二次分组化验;当 时, ,即不管是一次分组化验还是二次分组化.()1验,平均化验次数都大于不分组时平均化验次数,反而提高了化验费用,因此,在实际的血样分组检验中,不需要分组化验。3.讨论其它分组方案-平均概率模型首先我们先给出一个假定阳性血样的人群有 5 个小组检测为阳性,10 人患病,求共有多少组情况的 MATLAB 编程示例。示例:假定阳性血样的人群有 5 个小组时的 Matlab 的程序如下:clear;clc;counter=0;z=input
16、(请输入病人数: )for r1=1:zfor r2=r1:z-r1for r3=r2:z-r1-r2for r4=r3:z-r1-r2-r3for r5=r4:z-r1-r2-r3-r4if r1+r2+r3+r4+r5=zr1,r2,r3,r4,r5counter=counter+1;endendendendendendcounter输入 z 的值为 10,输出计算结果: z =10ans =1 1 1 1 6ans =1 1 1 2 5ans =1 1 1 3 4ans =1 1 2 2 4ans =1 1 2 3 3ans =1 2 2 2 3ans =2 2 2 2 2counter
17、 =7这表示如果有 5 个组为阳性,有 10 个人患病的话,可能会有 7 种分组情况,分组情况如上。假定总人数为 1000,p=1%时分组情况的讨论:1. n=1000,p=1%,分 100 组,每组 10 人阳性组 阴性组 分组可能情况 概率 检验次数 平均检验次数1 99 1 P1=1/42 110 2.6192 98 5 P2=5/42 120 14.2863 97 8 P3=8/42 130 24.7624 96 9 P4=9/42 140 305 95 7 P5=7/42 150 256 94 5 P6=5/42 160 19.0487 93 3 P7=3/42 170 12.143
18、8 92 2 P8=2/42 180 8.5719 91 1 P9=1/42 190 4.52410 90 1 P10=1/42 200 4.762平均检验次数: = 145.715xiiRPN1个人平均检验次数:E=N/1000= 0.14572. n=1000,p=1%,分 125 组,每组 8 人阳性组 阴性组 分组可能情况 概率 检验次数 平均检验次数1 124 0 0 0 02 123 5 P1=5/41 141 17.1953 122 8 P2=8/41 149 29.0734 121 9 P3=9/41 157 34.4635 120 7 P4=7/41 165 28.1716
19、119 5 P5=5/41 173 21.0987 118 3 P6=3/41 181 13.2448 117 2 P7=2/41 189 9.229 116 1 P8=1/41 197 4.80510 115 1 P9=1/41 205 5平均检验次数: = 162.269xiiRPN1个人平均检验次数:E=N/1000= 0.16233. n=1000,p=1%,分 50 组,每组 20 人阳性组 阴性组 分组可能情况 概率 检验次数 平均检验次数1 49 1 P1=1/42 70 1.6672 48 5 P2=5/42 90 10.7143 47 8 P3=8/42 110 20.952
20、4 46 9 P4=9/42 130 27.8575 45 7 P5=7/42 150 25.0006 44 5 P6=5/42 170 20.2387 43 3 P7=3/42 190 13.5718 42 2 P8=2/42 210 10.0009 41 1 P9=1/42 230 5.47610 40 1 P10=1/42 250 5.952平均检验次数: = 141.427xiiRPN1个人平均检验次数:E=N/1000= 0.14144. n=1000,p=1%,分 40 组,每组 25 人阳性组 阴性组 分组可能情况 概率 检验次数 平均检验次数1 39 1 P1=1/42 75
21、1.7857142 38 5 P2=5/42 100 11.904763 37 8 P3=8/42 125 23.809524 36 9 P4=9/42 150 32.142865 35 7 P5=7/42 175 29.166676 34 5 P6=5/42 200 23.809527 33 3 P7=3/42 225 16.071438 32 2 P8=2/42 250 11.904769 31 1 P9=1/42 275 6.54761910 30 1 P10=1/42 300 7.142857平均检验次数: = 164.2857xiiRPN1个人平均检验次数:E=N/1000= 0.1
22、643结果分析根据上述图表我们可以知道,总数为 1000 人,患病率为 1%的群体,选择每组人数为 10 到 25 之间的分组情况为宜。对于群体总量比较少的检验我们可以尽量选取多的如上面所述的模型进行计算进而得出期望检验次数最少且比较合理的分组方案。但对于数量比较大的总体应该重新考虑。根据上面各表以及我们对期望检验次数的计算,可以知道每组人数为 10 的期望检验人数为 145.715,其前即每组分 8 个人方案的期望检验人数为 162.8,而之后到了第组 25 即期望检验人数为 164.2857 变化比较小,虽然中间有每组 20 人的检验人数比其小但为了方便对于数量比较大的总体每组人数我们选择
23、可以选择 np(n 代表总量,p代表患病概率)六、模型评价和推广在实际操作中,由于多次分组需要多次混合血样,在操作中会带来很大的麻烦;而且,在混合当中可能会造成很大的误差,特别是当多次混合血样比一次混合或不分组的平均每人检验次数不是少很多的时候,进行一次分组或不分组效果可能会更好。本模型可以说在所给定的假设内解决了该问题。假设(1)在实际当中可能不会被作为分组与不分组的判断标准;假设(2)与(3)是可以接受的,直观上可以认为以阳性的先验概率至于不同疾病有关,而不会与检验次数有关,同时在没有遗传病的情况下,做出假设(3)也是合理的;假设(4)在人群数目较小时是很容易实现的,但当人群数目很大时,很
24、难严格的达到平均分组的条件。例如对某几个地区某病毒的感染情况进行调查统计时,往往利用分治法的思想把人群按单位或更小的行政区域进行分区调查,再将所有的数字汇总。这种分组的方法并不能保证平均分配人数。影响此模型的因素还有先验概率,先验概率是一定人群中的患病概率,如果人群的情况有所变化可能会对模型给出的结论有所影响。比如普通人群中艾滋病病毒抗体的感染率是很低的,如果用这个概率作为先验概率去进行对以男性同双性恋者为对象的估计中,往往会出现较大的偏差。最后,我们引入平均概率模型,再把血样检验中出现的可能性细化,得到当血样检验为阳性的人数等于分组后每一组的人数时,通过这样的分组模型可以使检验次数达到最优,
25、。七、参考文献【1】 姜启源,谢金星,叶俊 数学模型 高等教育出版社【2】王松桂,张忠占,陈维虎高旅端 概率论与数理统计 科学出版社【3】周兴建,岂兴明,矫津毅,常春藤 MATLAB 从入门到精通人民邮电出版社八、附件(1)附件清单:附件 1:第一次分组不同 值下的最佳分组人数 和平均每个人的检验次数pk的 LINGO 程序()EX附件 2:第二次分组不同 值下的最佳分组人数 和平均每个人的检验次数的 LINGO 程序()(2)附件 1 的 LINGO 程序(非线性规划法):data:p=0.08;enddatamin=1-(1-p)k+1/k;gin(k);(注:只需要按表 1 改变 值就可以得到表 1 的结果)p(3)附件 2 的 LINGO 程序(非线性规划法):data:p=0.0001;enddatamin=1/k+(1-(1-p)k)*(1/m+1-(1-p)m);gin(k);gin(m);z=k/m;gin(z);