spss中怎样进行fisher精确概率法统计

合集下载

spss中怎样进行fisher精确概率法统计

spss中怎样进行fisher精确概率法统计

spss中怎样进行fisher精确概率法统计最短距离法是把两个类之间的距离定义为一个类中的所有案例与另一类中的所有案例之间的距离最小者.缺点是它有链接聚合的趋势,因为类与类之间的距离为所有距离中最短者,两类合并以后,它与其他类之间的距离缩小了,这样容易形成一个较大的类.所以此方法效果并不好,实际中不太用. 2.最长距离法是把类与类之间的距离定义为两类中离得最远的两个案例之间的距离.最长距离法克服了最短距离法链接聚合的缺点,两类合并后与其他类的距离是原来两个类中的距离最大者,加大了合并后的类与其他类的距离. 3.平均联结法,最短最长距离法都只用两个案例之间的距离来确定两类之间的距离,没有充分利用所有案例的信息,平均联结法把两类之间的距离定义为两类中所有案例之间距离的平均值,不再依赖于特殊点之间的距离,有把方差小的类聚到一起的趋势,效果较好,应用较广泛. 4.重心法,把两类之间的距离定义为两类重心之间的距离,每一类的重心是该类中所有案例在各个变量的均值所代表的点.与上面三种不同的是,每合并一次都要重新计算重心.重心法也较少受到特殊点的影响.重心法要求用欧氏距离,其主要缺点是在聚类过程中,不能保证合并的类之间的距离呈单调增加的趋势,也即本次合并的两类之间的距离可能小于上一次合并的两类之间的距离. 5.离差平方和法,也称沃尔德法.思想是同一类内案例的离差平方和应该较小,不同类之间案例的离差平方和应该较大.求解过程是首先使每个案例自成一类,每一步使离差平方和增加最小的两类合并为一类,直到所有的案例都归为一类为止.采用欧氏距离,它倾向于把案例数少的类聚到一起,发现规模和形状大致相同的类.此方法效果较好,使用较广.个独立样本率比较的χ2检验属四格表资料χ2检验。

这类资料在医学研究中较为多见。

例如比较两种方法治疗某种疾病的有效率是否相同治疗结果如下:有效无效有效率(%)试验组 12 1对照组 3 8可以在SPSS中进行统计分析,具体操作详见附件中的.EXE文件。

SPSS教程:多个组比较(Fisher精确检验)及组间两两比较

SPSS教程:多个组比较(Fisher精确检验)及组间两两比较

SPSS教程:多个组比较(Fisher精确检验)及组间两两比较1、问题与数据某医生拟探讨是否可以通过改善生活方式,如增强体育锻炼、减小体重及改善饮食习惯等,降低患者的胆固醇浓度。

现该医生招募了32位高胆固醇、生活习惯差的受试者,并将其分成3组。

其中一组给予降胆固醇药物,一组给予饮食干预,另一组给予运动干预。

经过6个月的试验后,该医生重新测量受试者的胆固醇浓度,分为高和正常两类。

该医生收集了受试者接受的干预方法(intervention)和试验结束时胆固醇的风险程度(risk_level)等变量信息,并按照分类汇总整理出频数(freq)变量,数据如下:注:本研究将胆固醇浓度分为“高”和“正常”两类,只是为了分析方便,并不代表临床诊断结果2、对问题的分析为更好地介绍Fisher精确检验(2×C)分析方法,并说明其与卡方检验(2×C)的区别,本章节仍使用卡方检验(2×C)的例子,但对数据模型进行了调整,使其更符合Fisher精确检验(2×C)的要求。

卡方检验(2×C)的教程详见:SPSS:多个样本率的卡方检验及两两比较进行Fisher精确检验(2×C)也需要满足5项假设:假设1:观测变量是二分类变量,如本研究中试验结束时胆固醇的风险程度变量是二分类变量。

假设2:存在多个分组(>2个),如本研究有3个不同的干预组。

假设3:具有相互独立的观测值,如本研究中各位受试者的信息都是独立的,不会相互干扰。

假设4:研究设计必须满足:(a) 样本具有代表性,如本研究在高胆固醇、生活习惯差的人群中招募32位受试者;(b) 目的分组,可以是前瞻性的,也可以是回顾性的,如本研究中将受试者分成3组,分别给予降胆固醇药物、饮食和运动干预。

假设5:样本量较小,即存在预测频数小于5的情况。

经分析,本研究数据符合假设1-4,那么应该如何检验假设5,并进行Fisher精确检验(2×C)呢?3、思维导图4、SPSS操作4.1 数据加权(在使用整合数据的情况下)在进行正式操作之前,我们需要先对数据加权,如下:(1) 在主页面点击Data→Weight Cases弹出下图(2) 点击Weight cases by,激活Frequency Variable窗口(3) 将freq变量放入Frequency Variable栏(4) 点击OK4.2 检验假设5数据加权之后,我们要判断研究数据是否满足样本量要求,如下:(1) 在主页面点击Analyze→Descriptive Statistics→Crosstabs弹出下图(2) 将变量risk_level和intervention分别放入Row(s)栏和Column(s)栏(3) 点击Statistics,弹出下图(4) 点击Chi-square(5) 点击Continue→Cells(6) 点击Counts栏中的Expected选项(7) 点击Continue→OK经上述操作,SPSS输出预期频数结果如下:该表显示,本研究最小的预测频数是4.2,小于5,满足假设5。

fisher确切概率法的统计量

fisher确切概率法的统计量

fisher确切概率法的统计量一、引言在统计学中,我们常常需要利用样本数据来对总体的参数进行估计或者进行假设检验。

其中,概率论在统计学中起着重要的作用。

本文将介绍f i sh er确切概率法的统计量,它是一种常用的计算出现某种事件概率的方法。

二、f i s h e r确切概率法的定义f i sh er确切概率法是由英国统计学家Ro n al dA.F is he r提出的,旨在通过计算精确的概率来进行统计推断。

它适用于样本量较小或样本存在特殊性质的情况。

fi s he r确切概率法的统计量可以用于参数估计、假设检验等。

下面将介绍f is he r确切概率法在不同情况下的应用。

三、独立双样本下的f i s h e r确切概率法在独立双样本问题中,我们常常关注两个相互独立的样本的差异。

f i sh er确切概率法可以用来计算两个样本的差异所服从的概率分布。

具体来说,可以通过计算两个样本中获得更极端差异的情况下,出现的概率来进行假设检验。

这样,我们可以得出两个样本是否具有显著差异。

四、f i s h e r确切概率法的优势相比于传统的近似方法,fi sh er确切概率法具有以下几个优势:1.精确性:fi sh er确切概率法可以精确地计算出现某种事件的概率,结果更加可靠准确。

2.适用性广泛:fi sh e r确切概率法适用于各种样本情况,包括样本量小、样本存在特殊性质等。

3.客观性:fi sh er确切概率法的计算过程客观严谨,不受主观因素的影响。

五、f i s h e r确切概率法的应用示例下面通过一个示例来说明fi sh er确切概率法的应用。

假设某药物治疗某种疾病的成功率是80%。

现在我们想要检验这个成功率是否真实。

为了进行检验,我们随机选取了30名患者进行治疗,并观察到其中23名患者成功痊愈。

我们采用f is he r确切概率法来进行假设检验。

根据f is he r确切概率法的计算公式,我们可以计算出在成功率为80%的前提下,观察到23名患者成功痊愈的概率为0.048。

SPSS确切概率法(1)

SPSS确切概率法(1)

SPSS确切概率法(1)SPSS 确切概率法1.什么时候使用确切概率?当n很小时,因为不服从卡方分布(不能有单元格的期望小于1,不能有20%以上的单元格期望值小于5),所以不能用卡方检验,这时系统会在分析结果的最后给出警告(*****: 50% of the cells have expected counts less than 5. Chi-Square may not be a valid test),提示用户采用确切概率法分析。

2.确切概率的思想是什么?fisher精确检验其思想是在固定各边缘和的条件下,根据超几何分布(见概率分布),可以计算观测频数出现任意一种特定排列的条件概率。

把实际出现的观测频数排列,以及比它呈现更多关联迹象的所有可能排列的条件概率都算出来并相加,若所得结果小于给定的显著性水平(比如给定的显著水平为0.05),则判定所考虑的两个属性存在关联,从而拒绝h0。

3.怎么操作?例1.(1)录入数据(1)加权:Data――Weight Cases:Weight case by(选入“频数”)(3)卡方检验:Analyze――D escriptiveStatistics――Crosstabs:Row(选入性别),Column(选入咨询内容);点击Statistics:选择Chi-square;点击Continue,点击OK。

见图3,4。

4 分析结果:χ2值与P值,依次看“Chi-Square Tests”表的第1行,红色字体部分。

补充:第2行是校正的卡方值与P值,第4行是Fisher确切概率法计算的P值。

通常规定:(1)当两组总样本量n≥40且所有的单元格的理论频数T≥5时,看第1行的结果;当P≈检验水准时,看第4行的结果。

(2)当两组总样本量n≥40但有1≤理论频数T<5时,看第2行的结果;或者看第4行的结果。

(3)当两组总样本量n<40,或最小理论频数T<1时,看第4行的结果。

费希尔精确检验计算概率

费希尔精确检验计算概率

费希尔精确检验计算概率费希尔精确检验(Fisher's exact test)是一种用于计算分类数据中的观察到的差异的统计方法,特别适用于小样本量情况。

它的原理是基于一个由互补事件组成的原假设,通过计算原假设的概率来判断观察到的差异的显著性。

费希尔精确检验适用于二元变量的交叉表,即两个分类变量之间的关系。

这个关系可以用一个2x2的交叉表来展示,其中行表示第一个分类变量的两个类别,列表示第二个分类变量的两个类别,交叉点表示了两个变量的共同出现次数。

通过这个交叉表,我们可以计算出各个类别的边际合计以及总和。

假设我们有一个调查数据,研究了一个新药对疾病的疗效。

我们随机选择了100个患者,其中50人服用了新药,50人服用了安慰剂。

在服用新药组中,40人病情好转;在服用安慰剂组中,只有10人病情好转。

我们想知道新药是否显著地改善了患者的状况。

首先,我们可以将数据表示为一个2x2的交叉表:新药安慰剂总计-------------------------------好转401050不好转104050-------------------------------总计5050100现在我们可以使用费希尔精确检验来计算原假设的概率。

原假设是指没有关系或无差异的假设,即新药和安慰剂对患者的状况没有显著影响。

备择假设是指有关系或有差异的假设,即新药对患者的状况有显著改善。

P=(a+b)!(c+d)!(a+c)!(b+d)!/(a!b!c!d!n!)其中,a为新药组好转的患者数,b为新药组不好转的患者数,c为安慰剂组好转的患者数,d为安慰剂组不好转的患者数,n为总样本数。

在这个例子中,我们有a=40,b=10,c=10,d=40,n=100。

将这些值带入公式中,可以计算出原假设的概率。

P=(50!50!40!40!)/(40!10!10!40!100!)费希尔精确检验通过计算原假设的概率来判断观察到的差异的显著性,特别适用于小样本量情况。

Fisher精确检验(2xC)-SPSS教程

Fisher精确检验(2xC)-SPSS教程

一、问题与数据某研究人员拟比较接受三种不同药物治疗的肺癌患者的1年生存情况,共招募了135名肺癌患者,将其随机分成3组,每组各45人,分别给以药物1(Drug1)、药物2(Drug2)和药物3(Drug3),并进行为期一年的随访,记录每位研究对象的生存情况,变量名为death,生存记为0,死亡记为1。

最终共有118名研究对象完成实验,三组分别为43、37和38人。

部分数据如图1图1 部分数据二、对问题分析进行Fisher精确检验(2×C)也需要满足4项假设:假设1:观测变量是二分类变量,如本研究中结局变量死亡是二分类变量。

假设2:存在多个分组(>2个),如本研究有3个不同的药物治疗组。

假设3:具有相互独立的观测值,如本研究中各位研究对象的信息都是独立的,不存在相互干扰作用。

假设4:任一单元格期望频数小于5。

经分析,本研究数据符合假设1-3,那么应该如何检验假设4,并进行Fisher精确检验(2×C)呢?三、SPSS操作3.1 数据加权如果数据是汇总格式,则在进行Fisher精确检验之前,需要先对数据加权。

数据加权的步骤如下:在主界面点击Data→Weight Cases,弹出Weight Cases对话框后,点击Weight cases by,激活Frequency Variable窗口。

将frequency变量放入Frequency Variable栏,点击OK。

如图2。

图2 将freq变量放入Frequency Variable3.2 计算期望频数在主界面点击Analyze→Descriptive Statistics→Crosstabs,弹出Crosstabs对话框。

将变量Drug 和death分别放入Row(s)栏和Column(s)栏,如图3。

图3 Crosstabs点击Statistics后,弹出的对话框中点击Chi-square。

如图4。

图4 Crosstabs: Statistics点击Continue→Cells,在弹出的对话框中,点击Counts栏Expected选项,点击Continue→OK。

spss中怎样进行fisher精确概率法统计

spss中怎样进行fisher精确概率法统计

spss中怎样进行fisher精确概率法统计最短距离法是把两个类之间的距离定义为一个类中的所有案例与另一类中的所有案例之间的距离最小者.缺点是它有链接聚合的趋势,因为类与类之间的距离为所有距离中最短者,两类合并以后,它与其他类之间的距离缩小了,这样容易形成一个较大的类.所以此方法效果并不好,实际中不太用. 2.最长距离法是把类与类之间的距离定义为两类中离得最远的两个案例之间的距离.最长距离法克服了最短距离法链接聚合的缺点,两类合并后与其他类的距离是原来两个类中的距离最大者,加大了合并后的类与其他类的距离. 3.平均联结法,最短最长距离法都只用两个案例之间的距离来确定两类之间的距离,没有充分利用所有案例的信息,平均联结法把两类之间的距离定义为两类中所有案例之间距离的平均值,不再依赖于特殊点之间的距离,有把方差小的类聚到一起的趋势,效果较好,应用较广泛. 4.重心法,把两类之间的距离定义为两类重心之间的距离,每一类的重心是该类中所有案例在各个变量的均值所代表的点.与上面三种不同的是,每合并一次都要重新计算重心.重心法也较少受到特殊点的影响.重心法要求用欧氏距离,其主要缺点是在聚类过程中,不能保证合并的类之间的距离呈单调增加的趋势,也即本次合并的两类之间的距离可能小于上一次合并的两类之间的距离. 5.离差平方和法,也称沃尔德法.思想是同一类内案例的离差平方和应该较小,不同类之间案例的离差平方和应该较大.求解过程是首先使每个案例自成一类,每一步使离差平方和增加最小的两类合并为一类,直到所有的案例都归为一类为止.采用欧氏距离,它倾向于把案例数少的类聚到一起,发现规模和形状大致相同的类.此方法效果较好,使用较广.个独立样本率比较的χ2检验属四格表资料χ2检验。

这类资料在医学研究中较为多见。

例如比较两种方法治疗某种疾病的有效率是否相同?治疗结果如下:有效无效有效率(%)试验组 12 1 92.31对照组 3 8 27.27可以在SPSS中进行统计分析,具体操作详见附件中的.EXE文件。

SPSS统计策略(12):多组率、构成比比较的统计方法(卡方和Fisher法)

SPSS统计策略(12):多组率、构成比比较的统计方法(卡方和Fisher法)

SPSS统计策略(12):多组率、构成⽐⽐较的统计⽅法(卡⽅和Fisher法)多组率、构成⽐⽐较的统计分析从第11⽂开始,介绍实验性分类数据结局的统计分析⽅法。

第11⽂介绍了两组⼆分类结局的⽐较,即两组率的⽐较,俗称四格表资料的统计分析。

分类数据除了2*2的交叉表之外,还有诸多其他形式,⽐如多组率的⽐较、2组构成⽐的⽐较、甚⾄多组构成⽐的⽐较。

它们数据结构更为复杂,虽都采⽤卡⽅检验为主要⽅法,但细节⽅⾯与两组率的分析上有所区别。

实例分析案例1:某医院⽤三种⽅案治疗急性⽆黄疸型病毒肝炎254例,观察结果见下表,问三种⽅案治疗急性⽆黄疸型病毒肝炎的有效率是否不同?数据详见Hepatitis.sav案例2:为了解⾎型分布与胃癌及消化性溃疡病的关系,某单位进⾏了调查,试⽐较各组⾎型构成有⽆差别?案例3:为了不同孩⼦的意外伤害,分别⽐较了有⾏为问题的⼉童和⽆⾏为问题的⼉童的数据,请问两组⼉童意外伤害类型的分布上有⽆差异?1案情分析案例1结局为⼆上述3个例⼦结局均为分类数据(效果、⾎型、意外伤害类型),汇总数据形成的三线表称为多⾏多列交叉表或者⾏列表多⾏多列交叉表或者⾏列表。

区别就在于,案例组多分类结局。

因此,第1个例⼦为多个率的⽐较,第2个例⼦为多个构成⽐的⽐较,第3个例⼦则是2个构分类结局,案例2为多分类结局,案例3则是2组多分类结局。

成⽐的⽐较。

2统计分析策略多⾏多列交叉表数据的分析,或者说多个率、构成⽐,乃⾄两个构成⽐的⽐较,四格表资料的分析策略⼀样,均可以考虑卡⽅和均可以考虑卡⽅和Fisher确切概率⽅法进⾏。

但是细节⽅⾯,与四格表资料的分析策略有所不同。

第⼀,多⾏多列交叉表分析没有校正卡⽅。

具体应⽤条件如下:1.不超过20%单元格的理论频数(期望频数)T < 5时,可使⽤卡⽅检验进⾏⽐较。

不超过20%的T < 5,卡⽅检验2.如果超过20%单元格的理论频数(期望频数)T < 5,或者⾄少⼀个T<1,此时采⽤的是Fisher确切概率法。

SPSS数据分析的统计方法选择

SPSS数据分析的统计方法选择

数据分析的统计方法选择小结目录数据分析的统计方法选择小结 (1)目录 (1)●资料1 (2)完全随机分组设计的资料 (2)配对设计或随机区组设计 (3)变量之间的关联性分析 (4)●资料2 (5)1.连续性资料 (5)1.1两组独立样本比较 (5)1.2两组配对样本的比较 (5)1.3多组完全随机样本比较 (6)1.4多组随机区组样本比较 (6)2.分类资料 (6)2.1四格表资料 (6)2.2 2×C表或R×2表资料的统计分析 (7)2.3 R×C表资料的统计分析 (7)2.4 配对分类资料的统计分析 (7)●资料3 (8)一、两个变量之间的关联性分析 (8)二、回归分析 (9)●资料4 (9)一.统计方法抉择的条件 (9)1.分析目的 (10)2.资料类型 (10)3.设计方法 (11)4.分布特征及数理统计条件 (12)二.数据资料的描述 (12)1.数值变量资料的描述 (13)2.分类变量资料的描述 (13)三.数据资料的比较 (14)1.假设检验的基本步骤 (14)2.假设检验结论的两类错误 (15)3.假设检验的注意事项 (15)4.常用假设检验方法 (16)四.变量间的相关分析 (17)1.数值变量(计量资料)的关系分析 (18)2.无序分类变量(计数资料)的相关分析 (18)3.有序分类变量(等级资料)等级相关 (18)●资料1完全随机分组设计的资料一、两组或多组计量资料的比较1.两组资料:1)大样本资料或服从正态分布的小样本资料(1)若方差齐性,则作成组t检验(2)若方差不齐,则作t’检验或用成组的Wilcoxon秩和检验2)小样本偏态分布资料,则用成组的Wilcoxon秩和检验2.多组资料:1)若大样本资料或服从正态分布,并且方差齐性,则作完全随机的方差分析。

如果方差分析的统计检验为有统计学意义,则进一步作统计分析:选择合适的方法(如:LSD检验,Bonferroni检验等)进行两两比较。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

spss中怎样进行fisher精确概率法统计最短距离法是把两个类之间的距离定义为一个类中的所有案例与另一类中的所有案例之间的距离最小者.缺点是它有链接聚合的趋势,因为类与类之间的距离为所有距离中最短者,两类合并以后,它与其他类之间的距离缩小了,这样容易形成一个较大的类.所以此方法效果并不好,实际中不太用. 2.最长距离法是把类与类之间的距离定义为两类中离得最远的两个案例之间的距离.最长距离法克服了最短距离法链接聚合的缺点,两类合并后与其他类的距离是原来两个类中的距离最大者,加大了合并后的类与其他类的距离. 3.平均联结法,最短最长距离法都只用两个案例之间的距离来确定两类之间的距离,没有充分利用所有案例的信息,平均联结法把两类之间的距离定义为两类中所有案例之间距离的平均值,不再依赖于特殊点之间的距离,有把方差小的类聚到一起的趋势,效果较好,应用较广泛. 4.重心法,把两类之间的距离定义为两类重心之间的距离,每一类的重心是该类中所有案例在各个变量的均值所代表的点.与上面三种不同的是,每合并一次都要重新计算重心.重心法也较少受到特殊点的影响.重心法要求用欧氏距离,其主要缺点是在聚类过程中,不能保证合并的类之间的距离呈单调增加的趋势,也即本次合并的两类之间的距离可能小于上一次合并的两类之间的距离.5.离差平方和法,也称沃尔德法.思想是同一类内案例的离差平方和应该较小,不同类之间案例的离差平方和应该较大.求解过程是首先使每个案例自成一类,每一步使离差平方和增加最小的两类合并为一类,直到所有的案例都归为一类为止.采用欧氏距离,它倾向于把案例数少的类聚到一起,发现规模和形状大致相同的类.此方法效果较好,使用较广.个独立样本率比较的χ2检验属四格表资料χ2检验。

这类资料在医学研究中较为多见。

例如比较两种方法治疗某种疾病的有效率是否相同治疗结果如下:有效无效有效率(%)试验组 12 1对照组 3 8可以在SPSS中进行统计分析,具体操作详见附件中的.EXE文件。

在读取统计结果时,应当注意χ2检验的适用条件,正确选择Pearson卡方检验、Yates校正卡方检验、Fisher 精确概率法(本法不属于χ2检验)。

第三节四格表资料的Fisher确切概率法前面提及,当四格表资料中出现,或,或用公式(8-1)与公式(8-4)计算出值后所得的概率时,需改用四格表资料的Fisher确切概率(Fisher probabilities in 2×2 table)。

该法是由年)提出的,其理论依据是超几何分布(hypergeometric distribution),并非检验的范畴。

但由于在实际应用中常用它作为四格表资料假设检验的补充,故把此法列入本章。

下面以例8-1介绍其基本思想与检验步骤。

例8-1 某医师为研究乙肝免疫球蛋白预防胎儿宫内感染HBV的效果,将33例HBsAg阳性孕妇随机分为预防注射组和非预防组,结果见表8-3。

问两组新生儿的HBV总体感染率有无差别?表8-3两组新生儿HBV感染率的比较组别阳性阴性合计感染率(%)预防注射组41822非预防组5611合计92433一、基本思想在四格表周边合计数固定不变的条件下,计算表内4个实际频数变动时的各种组合之概率;再按检验假设用单侧或双侧的累计概率,依据所取的检验水准做出推断。

1.各组合概率的计算在四格表周边合计数不变的条件下,表内4个实际频数,,,变动的组合数共有“周边合计中最小数+1”个。

如例7-4,表内4个实际频数变动的组合数共有个,依次为:(1)(2)(3)(4)(5)22121220319418983746556ad-bc= -198ad-bc= -165ad-bc= -132ad-bc =-99ad-bc= -66(6)(7)(8)(9)(10)5176167158141347382911011ad-bc= -33ad-bc=0ad-bc=33ad-bc=66ad-bc= 99各组合的概率服从超几何分布,其和为1。

可按公式(8-9)计算(8-9)式中,,,,等符号的意义同表7-1;!为阶乘符号。

2.累计概率的计算单、双侧检验不同。

设现有样本四格表中的交叉积差,其概率为,其余情况下的组合四格表的交叉积差记为,概率记为。

(1)单侧检验若现有样本四格表中,须计算满足和条件的各种组合下四格表的累计概率。

若,则计算满足和条件的各种组合下四格表的累计概率。

(2)双侧检验计算满足和条件的各种组合下四格表的累计概率。

若遇到或时,四格表内各种组合的序列呈对称分布,此时按单侧检验规定条件只计算单侧累计概率,然后乘以2即得双侧累计概率。

二、检验步骤本例,宜用四格表资料的Fisher确切概率法直接计算累计概率。

检验步骤为:(1):,即两组新生儿HBV的总体感染率相等:,即两组新生儿HBV的总体感染率不等(2)计算现有样本四格表的和及各组合下四格表的,见表8-4。

本例、。

(3)计算满足条件的各组合下四格表的概率。

(4)计算同时满足和条件的四格表的累计概率。

本例、、、、和满足条件,累计概率为表8-4例8-1的 Fisher确切概率法计算表四格表组合12292-198212183-165220 74-1324319 65-995* 418 56-66* *65177 -337 6 16 3 8 08 7 15 2 9 339 8 14 1 10 6610131199* 为现有样本。

按检验水准不拒绝H0,尚不能认为预防注射与非预防的新生儿HBV的总体感染率不等。

#include<>#include <>#include<> /*清屏*/#include <> /*显示目录*/#include<>#define MAX 80void input(); /*输入数据函数*/void sort();/*排序数据函数*/void sort1();void sort2();void sort3();void display();/*显示数据函数*/void display1();void insert(); /*插入数据函数*/void del(); /*删除数据函数*/void average(); /*平均值函数*/void find();/*查找数据函数*/void find1();void find2();void save(); /*保存数据函数*/void read(); /*读出数据函数*/void del_file(); /*删除文件函数*/ void modify(); /*修改文件函数*/int now_no=0;struct student{int no;char name[20];char sex[4];float score1;float score2;float score3;float sort;float ave;float sum;};struct student stu[MAX],*p;main()/*主函数*/{int as;char ch;do{start: printf("\n\n\n\t\t\t欢迎使用学生成绩管理系统\n");printf("\n\n\n\n\n\n\t\t******************按任意键继续********************");ch=getch();}while(!ch);system("cls");/*一下为功能选择模块*/do{printf("\n\t\t\t\t1.录入学员信息\n\t\t\t\t2.显示学员总成绩信息\n\t\t\t\t3.对总成绩排序\n\t\t\t\t4.显示学员单科成绩排序\n\t\t\t\t5.添加学员信息\n\t\t\t\t6.删除学员信息\n\t\t\t\t7.修改学员信息\n\t\t\t\t8.查询学员信息\n\t\t\t\t9.从文件读入学员信息\n\t\t\t\t10.删除文件中学员信息\n\t\t\t\t11.保存学员信息\n\t\t\t\t12.退出\n");printf("\t\t\t\t选择功能选项(输入所选功能前的数字):");fflush(stdin);/*可用可不用,用于清除缓存防止下次用scanf输入是出现错误*/scanf("%d",&as);switch(as){case 1:system("cls");input();break;case 2:system("cls");display();break;case 3:system("cls");sort();break;case 4:system("cls");display1();break;case 5:system("cls");insert();break;case 6:system("cls");del();break;case 7:system("cls");modify();break;case 8:system("cls");find();break;case 9:system("cls");read();break;case 10:system("cls");del_file();break;case 11:system("cls");save();break;case 12:system("exit");exit(0);default:system("cls");goto start;}}while(1);/*while(1),1表示真,所以while(1)表示永远循环下去,一般在while(1)的循环体内都有break 或者return 跳出循环*//*至此功能选择结束*/}void input()/*原始数据录入模块*/{int i=0;char ch;do{printf("\t\t\t\t1.录入学员信息\n输入第%d个学员的信息\n",i+1);printf("\n输入学生编号:");scanf("%d",&stu[i].no);fflush(stdin);printf("\n输入学员姓名:");fflush(stdin);gets(stu[i].name);printf("\n输入学员性别:");fflush(stdin);gets(stu[i].sex);printf("\n输入学员成绩1:");scanf("%f",&stu[i].score1);printf("\n输入学员成绩2:");fflush(stdin);scanf("%f",&stu[i].score2);printf("\n输入学员成绩3:");fflush(stdin);scanf("%f",&stu[i].score3);printf("\n\n");i++;now_no=i;printf("是否继续输入(Y/N)");fflush(stdin);ch=getch();system("cls");}while(ch!='n'&&ch!='N');system("cls");}void sort()/*排序数据函数*/{struct student temp;int i,j;average();for(i=1;i<now_no;i++){for(j=1;j<=now_no-i;j++){if(stu[j-1].ave<stu[j].ave){temp=stu[j];stu[j]=stu[j-1];stu[j-1]=temp;}}}printf("排序以完成进入功能2可进行显示\n");system("pause");system("cls");}void sort1()/*排序数据函数*/{struct student temp;int i,j;for(i=1;i<now_no;i++){for(j=1;j<=now_no-i;j++){if(stu[j-1].score1<stu[j].score1){temp=stu[j];stu[j]=stu[j-1];stu[j-1]=temp;}}}}void sort2()/*排序数据函数*/{struct student temp;int i,j;for(i=1;i<now_no;i++){for(j=1;j<=now_no-i;j++){if(stu[j-1].score2<stu[j].score2){temp=stu[j];stu[j]=stu[j-1];stu[j-1]=temp;}}}}void sort3()/*排序数据函数*/{struct student temp;int i,j;for(i=1;i<now_no;i++){for(j=1;j<=now_no-i;j++){if(stu[j-1].score3<stu[j].score3){temp=stu[j];stu[j]=stu[j-1];stu[j-1]=temp;}}}}void display()/*显示数据函数*/{int i;char as;average();do{printf("\t\t\t班级学员信息列表\n");printf("\t编号\t姓名\t性别\t成绩1\t成绩2\t成绩3\t平均值\n");for(i=0;i<now_no&&stu[i].name[0];i++)printf("\t%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].no,stu[i]. name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].ave);printf("\t\t按任意键返回主菜单.");fflush(stdin);as=getch();}while(!as);system("cls");}void display1()/*显示数据函数*/{int i;char as;do{printf("\t\t\t班级学员score1成绩排序\n");printf("\t编号\t姓名\t性别\t成绩1\n");sort1();for(i=0;i<now_no&&stu[i].name[0];i++)printf("\t%d\t%s\t%s\t%.2f\t\n",stu[i].no,stu[i].name,stu[i].sex ,stu[i].score1);printf("\t\t\t班级学员score2成绩排序\n");printf("\t编号\t姓名\t性别\t成绩2\n");sort2();for(i=0;i<now_no&&stu[i].name[0];i++)printf("\t%d\t%s\t%s\t%.2f\t\n",stu[i].no,stu[i].name,stu[i].s ex,stu[i].score2);printf("\t\t\t班级学员score3成绩排序\n");printf("\t编号\t姓名\t性别\t成绩3\n");sort3();for(i=0;i<now_no&&stu[i].name[0];i++)printf("\t%d\t%s\t%s\t%.2f\t\n",stu[i].no,stu[i].name,stu[i].s ex,stu[i].score3);printf("\t\t按任意键返回主菜单.");fflush(stdin);as=getch();}while(!as);system("cls");}void insert()/*插入数据函数*/{char ch;do{printf("\n\t\t输入新插入学员队信息\n");printf("\n输入学生编号:");scanf("%d",&stu[now_no].no);fflush(stdin);printf("\n输入学员姓名:");fflush(stdin);gets(stu[now_no].name);printf("\n输入学员性别:");fflush(stdin);gets(stu[now_no].sex);printf("\n输入学员成绩1:");fflush(stdin);scanf("%f",&stu[now_no].score1);printf("\n输入学员成绩2:");fflush(stdin);scanf("%f",&stu[now_no].score2);printf("\n输入学员成绩3:");fflush(stdin);scanf("%f",&stu[now_no].score3);printf("\n\n");now_no=now_no+1;sort();printf("是否继续输入(Y/N)");fflush(stdin);ch=getch();system("cls");}while(ch!='n'&&ch!='N');}void del()/*删除数据函数*/{int inum,i;printf("输入要删除学员的编号:");fflush(stdin);scanf("%d",&inum);for(i=0;i<now_no;i++){if(stu[i].no==inum){if(i==now_no)now_no-=1;else{stu[i]=stu[now_no-1];now_no-=1;}sort();break;}}system("cls");}void save()/*保存数据函数*/{FILE *fp;int i;char filepath[20];printf("输入要保存的文件路径:");fflush(stdin);gets(filepath);if((fp=fopen(filepath,"w"))==NULL){printf("\n保存失败!");exit(0);}for(i=0;i<now_no;i++){stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3;stu[i].ave=stu[i].sum/3;fprintf(fp,"\t%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i] .no,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].ave );}fclose(fp);printf("学生信息已保存在%s中!\n",filepath);system("pause");system("cls");}void find()/*查询函数*/{int i;char str[20],as;do{printf("输入要查询的学生姓名:");fflush(stdin);gets(str);for(i=0;i<now_no;i++)if(!strcmp(stu[i].name,str)){printf("\t编号\t姓名\t性别\t成绩1\t成绩2\t成绩3\t平均值\n");printf("\t%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].no, stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].ave);}printf("\t\t按任意键返回主菜单.");fflush(stdin);as=getch();}while(!as);system("cls");}void average()/*求平均数*/{int i;for(i=0;i<now_no;i++){stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3;stu[i].ave=stu[i].sum/3;}}void modify()/*修改数据函数*/{int i;char str[20];printf("输入要修改的学生姓名:");fflush(stdin);gets(str);for(i=0;i<now_no;i++){if(!strcmp(stu[i].name,str)){system("cls");printf("\n\t\t输入新插入学员队信息\n");printf("\n输入学生编号:");fflush(stdin);scanf("%d",&stu[i].no);printf("\n输入学员性别:");fflush(stdin);gets(stu[i].sex);printf("\n输入学员成绩1:");fflush(stdin);scanf("%f",&stu[i].score1);printf("\n输入学员成绩2:");fflush(stdin);scanf("%f",&stu[i].score2);printf("\n输入学员成绩3:");fflush(stdin);scanf("%f",&stu[i].score3);printf("\n\n");sort();break;}}system("cls");}void read(){FILE *fp;int i;char filepath[20];printf("输入要读入的文件路径:");fflush(stdin);gets(filepath);if((fp=fopen(filepath,"r"))==NULL){printf("找不到%s文件!\n",filepath);system("pause");exit(0);}now_no=0;for(i=0;i<MAX&&!feof(fp);i++){fscanf(fp,"\t%d\t%s\t%s\t%f\t%f\t%f\t%f\n",&stu[i].no,stu[i].name,st u[i].sex,&stu[i].score1,&stu[i].score2,&stu[i].score3,&stu[i].ave);now_no++;}fclose(fp);printf("保存的在文件%s中的所有信息已经读入!\n",filepath);system("pause"); /*按任意键继续*/system("cls");}void del_file(){FILE *fp;char filepath[20];printf("输入要删除的文件路径:");fflush(stdin);gets(filepath);fp=fopen(filepath,"w");fclose(fp);printf("保存的在文件%s中的所有信息已经删除!\n",filepath); system("pause");system("cls");}。

相关文档
最新文档