当前位置:文档之家› 阑尾炎诊断程序

阑尾炎诊断程序

1. 阑尾炎诊断程序在一个慢性、急性、穿孔性阑尾炎的诊断过程中,经病理分析,归纳,对于各“体征”会出现几种不同的情况,如表所示。

某医院根据7.2例对各体征的各种情况算出出现概率的估计值32171321,,,,),|(),|(),|(D D D x x D x p D x p D x p i i i 代表七种体征,其中⋯分别表示慢性、急性和穿孔性。

又根据病历资料,得到诊断地区三种阑尾炎的发病率)()()(321D P D P D P 、、(可得其定值),根据表中提供的各体征的数据,试用贝叶斯统计方法,确定所属哪一类病。

(提示:计算∑=⋯⋯=⋯31717171)|()|()()|()|()()|(j i i ii i i I D x p D xp D P D x p D x p D P x x D P )例如上腹疼,则知111213(|)15%,(|)29%,(|)42%p x D p x D p x D === 程序界面如图:七种症状各用一个单选框进行确定,默认均为第一个选择。

三个文本框用以输入本地区已知的三种阑尾炎的发病率,即公式中的)()()(321D P D P D P 、、。

i =1~3,对应的)|(71x x D P I 取值不同,取i 中最大的一个。

程序代码如下:Dim sum(6, 2), tz1(4, 2) As Single, tz2(2, 2), tz3(2, 2), tz4(1, 2),tz5(2, 2), tz6(2, 2), tz7(2, 2) As Single Private Sub Command1_Click() For i = 0 To 4If Option1(i).Value = True Thensum(0, 0) = tz1(i, 0): sum(0, 1) = tz1(i, 1): sum(0, 2) = tz1(i, 2)End If NextFor i = 0 To 2If Option2(i).Value = True Thensum(1, 0) = tz2(i, 0): sum(1, 1) = tz2(i, 1): sum(1, 2) = tz2(i, 2)End If NextFor i = 0 To 2If Option3(i).Value = True Thensum(2, 0) = tz3(i, 0): sum(2, 1) = tz3(i, 1): sum(2, 2) = tz3(i, 2)End If NextFor i = 0 To 1If Option4(i).Value = True Thensum(3, 0) = tz4(i, 0): sum(3, 1) = tz4(i, 1): sum(3, 2) = tz4(i, 2)End If NextFor i = 0 To 2If Option5(i).Value = True Thensum(4, 0) = tz5(i, 0): sum(4, 1) = tz5(i, 1): sum(4, 2) = tz5(i, 2)End If NextFor i = 0 To 2If Option6(i).Value = True Thensum(5, 0) = tz6(i, 0): sum(5, 1) = tz6(i, 1): sum(5, 2) = tz6(i, 2)End If NextFor i = 0 To 2If Option7(i).Value = True Thensum(6, 0) = tz7(i, 0): sum(6, 1) = tz7(i, 1): sum(6, 2) = tz7(i, 2)End IfNextFor i = 0 To 2If Text1(i).Text = "" ThenMsgBox "请输入已知的本地区发病率!", 16, "错误"Exit SubEnd IfNextFor i = 0 To 2If Text1(i).Text > 1 Or Text1(i).Text < 0 ThenMsgBox "请输入正确的数值!", 16, "错误"Exit SubEnd IfNextDim PDX, P(2), PD(2), P3 As SingleFor i = 0 To 2PD(i) = Text1(i).TextNextFor i = 0 To 2P(i) = PD(i) * sum(0, i) * sum(1, i) * sum(2, i) * sum(3, i) * sum(4, i) * sum(5, i) * sum(6, i)NextP3 = P(0) + P(1) + P(2)P(0) = P(0) / P3: P(1) = P(1) / P3: P(2) = P(2) / P3If P(0) >= P(1) ThenIf P(1) >= P(2) ThenPDX = P(0): Text2.Text = "慢性阑尾炎"Else: PDX = P(2): Text2.Text = "穿孔性阑尾炎"End IfElseIf P(1) >= P(2) ThenPDX = P(1): Text2.Text = "急性阑尾炎"Else: PDX = P(2): Text2.Text = "穿孔性阑尾炎"End IfEnd SubPrivate Sub Command2_Click()Unload Form1Load Form2Form2.ShowEnd SubPrivate Sub Command3_Click() Unload Form1 Load Form3 Form3.Show End SubPrivate Sub Form_Load()tz1(0, 0) = 0.67: tz1(0, 1) = 0.17: tz1(0, 2) = 0.11: tz1(1, 0) = 0.02: tz1(1, 1) = 0.04: tz1(1, 2) = 0.05tz1(2, 0) = 0.15: tz1(2, 1) = 0.29: tz1(2, 2) = 0.42: tz1(3, 0) = 0.12: tz1(3, 1) = 0.38: tz1(3, 2) = 0.23tz1(4, 0) = 0.05: tz1(4, 1) = 0.11: tz1(4, 2) = 0.15tz2(0, 0) = 0.33: tz2(0, 1) = 0.31: tz2(0, 2) = 0.12: tz2(1, 0) = 0.53: tz2(1, 1) = 0.39: tz2(1, 2) = 0.28tz2(2, 0) = 0.15: tz2(2, 1) = 0.4: tz2(2, 2) = 0.6tz3(0, 0) = 0.86: tz3(0, 1) = 0.74: tz3(0, 2) = 0.53: tz3(1, 0) = 0.11: tz3(1, 1) = 0.13: tz3(1, 2) = 0.25tz3(2, 0) = 0.03: tz3(2, 1) = 0.13: tz3(2, 2) = 0.22tz4(0, 0) = 0.98: tz4(0, 1) = 0.91: tz4(0, 2) = 0.61: tz4(1, 0) = 0.02: tz4(1, 1) = 0.09: tz4(1, 2) = 0.09tz5(0, 0) = 0.7: tz5(0, 1) = 0.29: tz5(0, 2) = 0.09: tz5(1, 0) = 0.27: tz5(1, 1) = 0.54: tz5(1, 2) = 0.32tz5(2, 0) = 0.03: tz5(2, 1) = 0.17: tz5(2, 2) = 0.59tz6(0, 0) = 0.7: tz6(0, 1) = 0.09: tz6(0, 2) = 0.16: tz6(1, 0) = 0.2: tz6(1, 1) = 0.11: tz6(1, 2) = 0.28tz6(2, 0) = 0.1: tz6(2, 1) = 0.8: tz6(2, 2) = 0.56tz7(0, 0) = 0.1: tz7(0, 1) = 0.57: tz7(0, 2) = 0.92: tz7(1, 0) = 0.37: tz7(1, 1) = 0.32: tz7(1, 2) = 0.04tz7(2, 0) = 0.52: tz7(2, 1) = 0.11: tz7(2, 2) = 0.04End Sub2. 坦克识别程序在图象识别中,假定有灌木丛和坦克两类型,先验概率3.0)(7.0)(21==ωωP P ,,21ωω和表示灌木从和坦克,判决32211,αωαωα==,表示拒绝判决,先做四次试验,获得四个样本的类概率密度如下:)|(1ωx p =0.1,0.15,0.3,0.6)|(2ωx p =0.8,0.7,0.55,0.3 损失函数如下:(1) 用贝叶斯最小错误率判决规则判断四样本各属于哪一类型; (2) 用贝叶斯最小风险判决规则判断四个样本各属于哪一类型;(3) 把(1)和(2)考虑的问题改用最大似然比判决规则,重新判断四样本的类别属性。

程序界面如下:程序源代码如下: Option ExplicitDim pw(1) As Single, P(1) As Single, L(2, 1) As Single Dim i As IntegerPrivate Function texttest() texttest = 1For i = 0 To 1If Text1(i).Text = "" ThenMsgBox "请输入类条件概率", 16, "错误"texttest = 0Exit FunctionEnd IfNextFor i = 0 To 1If Text1(i).Text > 1 Or Text1(i).Text < 0 Then MsgBox "请输入正确的数值", 16, "错误"texttest = 0Exit FunctionEnd IfNextEnd FunctionPrivate Sub Command1_Click()If texttest = 0 Then Exit SubFor i = 0 To 1P(i) = CSng(Text1(i).Text) * pw(i)NextIf P(0) > P(1) ThenText2.Text = "坦克"ElseIf P(0) < P(1) Then Text2.Text = "灌木丛"Else: Text2.Text = "可能是坦克,也可能是灌木丛"End IfEnd SubPrivate Sub Command2_Click()If texttest = 0 Then Exit SubDim pwx(1) As Single, px As Single, R(2) As Single For i = 0 To 1P(i) = CSng(Text1(i).Text) * pw(i)px = px + P(i)Nextpwx(0) = P(0) / px: pwx(1) = P(1) / pxFor i = 0 To 2R(i) = L(i, 0) * pwx(0) + L(i, 1) * pwx(1)NextIf R(0) < R(1) ThenIf R(0) < R(2) ThenText2.Text = "坦克"Else: Text2.Text = "拒绝判决"End IfElseIf R(1) < R(0) Then If R(1) < R(2) Then Text2.Text = "灌木丛"Else: Text2.Text = "拒绝判决" End IfElse: Text2.Text = "拒绝判决" End If End SubPrivate Sub Command3_Click() If texttest = 0 Then Exit Sub Dim MX As Single, L12 As Single MX = pw(1) / pw(0)L12 = CSng(Text1(0).Text) / CSng(Text1(1).Text) If L12 < MX ThenText2.Text = "灌木丛" Else: Text2.Text = "坦克" End If End SubPrivate Sub Command4_Click() Unload Form2 Load Form1 Form1.Show End SubPrivate Sub Command5_Click() Unload Form2 Load Form3 Form3.Show End SubPrivate Sub Form_Load() pw(0) = 0.7: pw(1) = 0.3L(0, 0) = 0.5: L(0, 1) = 2: L(1, 0) = 4: L(1, 1) = 1: L(2, 0) = 1.5: L(2, 1) = 1.5End Sub3. 细胞的识别(1)在细胞的化验中要区分正常的和异常的两种类型,分别以1ω和2ω表示,各自的先验概率为85.0)(1=ωP 和15.0)(2=ωP ,若由一次化验的观测值从类概率密度分布曲线上查得)|(1ωx p 和)|(2ωx p ,则用最小错误率判决规则判断细胞属于哪一类型。

相关主题