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

合集下载

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

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

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

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

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

多元统计分析课程设计--Fisher判别法的应用---spss分析

多元统计分析课程设计--Fisher判别法的应用---spss分析
分类函数系数
组别
高收入
次高收入
城镇居民家庭总收入
.025
.021
工资性收入
-.018
-.015
经营性收入
.014
.009
财产性收入
-.064
-.050
转移性收入
-.009
-.009
(常量)
-105.381
-55.554
Fisher的线性判别式函数
表2-2
由分析结果表2-2可知高收入组的Fisher线性判别函数为:
函数
1
城镇居民家庭总收入
2.940
工资性收入
-1.892
经营性收入
.943
财产性收入
-1.322
转移性收入
-.112
表2-1
得到分析结果如下:
如表2-1所示可知只有一个判别函数:
D1=2.94*城镇居民家庭总收入-1.892*工资性收入+0.943*经营性收入-1.322*财产性收入-1.112*转移性收入
本文利用Fisher判别法,将沿海11省市作为先验组得到Fisher判别函数
(其中 分别代表城镇居民家庭总收入、工资性收入、经营性收入、财产性收入、转移性收入)
然后将剩余未分组省市代入判别函数,与先验组的临界值比较进行分组。分组结果显示高收入组(北京、上海、天津、广东、浙江)都在沿海省市,内陆省市则都属于次高收入组,这与我国东部沿海地区省市的城镇居民家庭收入较中西部高的国情吻合。
图2-3
步骤三选择“组别”变量使之添加到group ariable框中。这时group ariable框下的define range按钮变为可用,单击,弹出discriminant analyze:difine对话框如图2-4所示,并在minium中输入1,在maximum中输入2.

spss教程

spss教程

描述性统计分析(Descriptive Statistics)统计分析往往是从了解数据的基本特征开始的。

描述数据分布特征的统计量可分为两类:一类表示数量的中心位置,另一类表示数量的变异程度(或称离散程度)。

两者相互补充,共同反映数据的全貌。

这些内容可以通过SPSS中的“Descriptive Statistics”菜单中的过程来完成。

1 频数分析(Descriptive Statistics - Frequencies)频数分布分析主要通过频数分布表、条形图和直方图,以及集中趋势和离散趋势的各种统计量来描述数据的分布特征。

下面我们通过例子来学习单变量频数分析操作。

1) 输入分析数据在数据编辑器窗口打开“data1-2.sav”数据文件。

2)调用分析过程在主菜单栏单击“Analyze”,在出现的下拉菜单里移动鼠标至“Descriptive Statistics”项上,在出现的次菜单里单击“Frequencies”项,打开如图3-4所示的对话框。

图3-4 “Frequencies” 对话框3)设置分析变量从左则的源变量框里选择一个和多个变量进入“Variable(s):”框里。

在这里我们选“三化螟蚁螟 [虫口数]”变量进入“Variable(s):”框。

4)输出频数分布表Display frequency tables,选中显示。

5)设置输出的统计量单击“Statistics”按钮,打开图3-5所示的对话框,该对话框用于选择统计量:图3-5 “Statistics”对话框① 选择百分位显示“Percentiles Values”栏:Quartiles:四分位数,显示25%、50%和75%的百分位数。

Cut points for 10 equal groups:将数据平分为输入的10个等份。

Percentile(s)::用户自定义百分位数,输入值0—100之间。

选中此项后,可以利用“Add”、“Change”和“Remove”按钮设置多个百分位数。

2.spss应用(计数资料分析、非参数检验、统计图绘制)

2.spss应用(计数资料分析、非参数检验、统计图绘制)

配伍组设计的秩和检验:例题8-9(P143) Analyze→nonparametric tests →k related samples
→test variables:变量1、变→ok
三、统计图的绘制
1.直条图、误差条图 2.圆图
3.线图、半对数线图
配对四格表资料的2检验:例题7-3(P114)
Data→weight cases → weight cases by: frequency variable:f →ok analyze→descriptive statistics →crosstabs … : row: 法一 column:法二 statistics →选择McNemar →continue →ok
实例分析
P112 P114 P114 P116 P117 P119 P119 P120 例7-1 例7-2 例7-3 例7-4 例7-5 例7-6 例7-7 例7-8
二、非参数检验
配对设计的符号秩检验:例题8-1(P132)
Analyze→nonparametric tests
→2 related samples
例题7-1(P112)数据输入的格式: 组别:分组变量 1-试验组 2-对照组 疗效: 1-有效 0-无效 f:表示频数 组别 1 1 2 2 疗效 1 0 1 0 f 99 5 75 21
1 2 3 4
四格表资料的2检验:例题7-1(P112)
Data→weight cases → weight cases by: frequency variable:f →ok analyze →descriptive statistics →crosstabs … : row: 组别 column:疗效 statistics →选择chi-square →continue → ok

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。

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确切概率法。

fisher精确概率法

fisher精确概率法

fisher精确概率法
Fisher精确概率法是一种最常用的检验方法,可用来检查两个或更多样本中假设的统计性
质是否成立。

它是由英国数学家Ronald Fisher于1935年提出的,是一种用来检验独立性
的测试。

这种检验涉及两个步骤:首先,根据样本数据和两独立变量之间的关系来计算出期望度量。

然后,根据计算出的期望度量和实际观察值之间的差异,用卡方分布检验,来评估组之间
的独立性是否满足假设。

如果卡方值的计算值小于某一规定的某一临界值,则二者满足独
立性假设。

在一般情况下,Fisher精确概率法是用来检验两组人群之间疾病相关性的常见方法。

它也
可以应用于假设检验中,比如从两个正态分布生成的两组样本之间的总体差异。

此外,Fisher精确概率法还可以用来评估模型的拟合度,并且还可用于多因素分析,比如
评价因变量与两个或多个自变量之间的相关性。

Fisher精确概率法有许多优点,比如计算方便,可以简单地求出期望值,而无需很费力地
计算;而且,它也可以用于蒙特卡洛模拟,从而确定真实值;此外,由于fisher精确概率
法与卡方近似,它可以准确地评估组间独立性是否满足假设。

总而言之,fisher精确概率法是许多统计假设检验中最常用的方法之一,可以评估两组人
群之间疾病相关性,以及模型拟合度等。

它具有计算简单,结果准确,容易应用于蒙特卡
洛模拟等优点,可作为研究的有效工具。

spss统计分析方法简述

spss统计分析方法简述
46、
如果采用的是配对(或配比)设计,研究多个因素对二分类因变量的影响则可以采用条件logistic回归。
案例:有研究者采用1:1匹配,研究感冒与接种流感疫苗、吸烟的关系,尝试进行统计分析
47、
寿命表法适用于大样本资料且事先按照时间段划分区间,再进行分析。
某医院对304例胃癌患者术后生存情况进行11年随访,据此计算胃癌患者术后各年的生存率。
35、
比较两组或多组多变量均数向量的轮廓是否相等。
案例:
为比较两个产地某中草药的有效成分,对两产地中草药各随机抽取10份标本进行5种有效成分检测,请问两产地中草药成分有无差异?
多变量检验中因子1*产地F=2.899a,p=0.058,可以认为两总体的轮廓相互平行。即两种产地的调查结果轮廓基本相同。
主体间效应检验F24.938,P=0.000<0.01,可见两总体的轮廓没有重合。
结果显示身高与体重的Pearson相关系数r=0.868,P=0.000<0.05,说明身高与体重的相关性是真实存在的,而且呈现显著相关。
37、
在上述案例基础上,增加一个变量——肺呼量(Z),我们知道身高和体重均和肺呼量有关系,如果想知道身高和体重之间的偏相关系数。
意即扣除肺活量影响后,身高和体重之间的净相关还是有意义的,但比简单相关系数小了一点点。
49、
当影响结局发生的因素较多,并且我们不仅仅想知道不同因素各水平之间是否有差异,而且想知道每个因素对结局发生的风险。
案例:某研究者想研究肺癌四种亚型的生存时间有无差别,收集了一些肺癌病例的数据。要求列出Cox回归模型的主要分析结果并能合理地解释结果。
50、
分析因素在不同时间,所发生的作用发生变化,如年龄变量,年龄本身随着时间的变化而变化,同时不同年龄人群其发生疾病的风险是不一样的。因此就需要特定的模型进行分析,就是本节要讲解的时间依存变量Cox回归模型。

费舍尔确切概率法

费舍尔确切概率法

费舍尔确切概率法费舍尔确切概率法(Fisher’s Exact Test)是一种用于分析分类数据的统计方法,它是由英国统计学家罗纳德·费舍尔(Ronald A. Fisher)于1922年提出的。

该方法是在小样本情况下进行推断的一种常用工具,特别适用于二维列联表的分析。

费舍尔确切概率法的背景和原理费舍尔确切概率法的主要应用场景是当样本量较小,无法满足传统的卡方检验条件时,例如疾病发生率的研究、临床试验数据的分析等。

传统的卡方检验在小样本情况下可能出现不准确的结果,而费舍尔确切概率法则能够准确计算出在给定边际条件下,研究结果发生的概率。

其核心原理是基于超几何分布的概率计算。

假设有一个2行2列的列联表,用来比较两个不同组别之间的差异性。

其中,行表示一个分类变量的两个水平,列表示另一个分类变量的两个水平。

计算费舍尔确切概率就是基于超几何分布计算不同条件下数据取得比观测数据更极端情况的概率。

费舍尔确切概率法的假设和计算步骤在使用费舍尔确切概率法进行分析时,需要满足以下两个假设:1.每个样本之间是独立的。

2.每个样本属于相应组别的概率是相等的。

费舍尔确切概率法的计算步骤如下:1.计算出实际观测到的列联表中各个单元格的各种不同组合方式的数量。

2.对于每种组合方式,计算该组合方式出现的概率。

这个概率是基于超几何分布计算得出的。

3.计算出观测到的列联表中极端情况出现(或更”非常”极端情况出现)的概率。

这个概率是累加观测到的列联表中所有比当前列联表更极端情况组合方式出现的概率。

4.根据2和3的概率计算出双尾或单尾的p值。

对于双尾检验的情况,将左尾和右尾的概率相加。

对于单尾检验的情况,根据研究假设选择左尾或右尾的概率。

费舍尔确切概率法的优缺点和应用领域费舍尔确切概率法的优点包括:1.在小样本情况下,能够给出准确的结果。

2.无需依赖渐近理论,适用于各种样本分布情况。

3.可应用于二维列联表的分析,适用于分类数据的比较和分析。

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。

费希尔精确概率检验

费希尔精确概率检验

费希尔精确概率检验
费希尔精确概率检验是一种用于比较两个分类变量之间是否存
在关联性的统计学方法。

该方法可以在小样本情况下使用,不需要对数据进行任何假设,并且可以计算出精确的P值。

在使用费希尔精确概率检验时,需要建立一个列联表,将两个分类变量之间的关系可视化。

然后,使用公式计算出列联表中各个单元格中出现的频数与期望频数之间的差异。

接着,将这些差异值汇总并计算出一个P值,用于衡量关联性是否显著。

费希尔精确概率检验被广泛应用于医学、生物学、社会科学等领域的统计分析中。

它可以帮助研究人员确定两个变量之间的关联性,并且可以有效避免传统统计方法中的误差和偏差。

- 1 -。

费希尔精确概率检验

费希尔精确概率检验

费希尔精确概率检验费希尔精确概率检验是一种用于小样本数据的假设检验方法,它可以用来检验两个分类变量之间的关系是否显著。

该方法的优点在于可以避免使用近似方法所带来的误差,因此在小样本数据的情况下,费希尔精确概率检验是一种非常有用的工具。

费希尔精确概率检验的基本思想是,对于给定的数据,计算出所有可能出现的情况下,出现当前观察到的数据或更极端情况的概率。

如果这个概率小于预先设定的显著性水平,那么就可以拒绝原假设,认为两个变量之间存在显著的关系。

具体来说,费希尔精确概率检验的步骤如下:1. 确定原假设和备择假设。

原假设通常是两个变量之间不存在关系,备择假设则是两个变量之间存在关系。

2. 构建列联表。

列联表是一个二维表格,用来记录两个变量之间的关系。

表格的行表示一个变量的不同取值,列表示另一个变量的不同取值。

表格中的每个单元格表示两个变量同时取某个值的样本数量。

3. 计算出当前观察到的数据的统计量。

通常使用卡方统计量来衡量两个变量之间的关系。

4. 计算出所有可能出现的情况下,出现当前观察到的数据或更极端情况的概率。

这个过程需要使用组合数学的方法来计算。

5. 比较计算出的概率和预先设定的显著性水平。

如果计算出的概率小于显著性水平,那么就可以拒绝原假设,认为两个变量之间存在显著的关系。

需要注意的是,费希尔精确概率检验只适用于小样本数据。

当样本量较大时,使用近似方法可以得到更高效的结果。

此外,费希尔精确概率检验也只适用于分类变量之间的关系检验,对于连续变量之间的关系检验,需要使用其他方法。

总之,费希尔精确概率检验是一种非常有用的小样本数据假设检验方法,可以用来检验两个分类变量之间的关系是否显著。

在实际应用中,需要根据具体情况选择合适的检验方法,并注意检验结果的解释和应用。

  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)22 1 21 2 20 3 19 4 189 2 8 3 76556ad-bc= -198ad-bc= -165ad-bc= -132ad-bc =-99ad-bc= -66(6)(7)(8)(9)(10)17 6 16 7 15 8 14 9 134 7 3 8911011ad-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确切概率法计算表四格表组合122 92-1982121 83-165220 74-1324319 65-995* 418 56-66* *6517 47-337 6 16 3 8 08 7 15 2 9 338 14 1 10 6610 9 13 0 11 99* 为现有样本。

按检验水准不拒绝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");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");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");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].sc ore2,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,st u[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].sex,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].sex,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].score 1,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,st u[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].s core3;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");。

相关文档
最新文档