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

上传人:b****9 文档编号:25395239 上传时间:2023-06-08 格式:DOCX 页数:23 大小:509.38KB
下载 相关 举报
spss中怎样进行fisher精确概率法统计.docx_第1页
第1页 / 共23页
spss中怎样进行fisher精确概率法统计.docx_第2页
第2页 / 共23页
spss中怎样进行fisher精确概率法统计.docx_第3页
第3页 / 共23页
spss中怎样进行fisher精确概率法统计.docx_第4页
第4页 / 共23页
spss中怎样进行fisher精确概率法统计.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

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

《spss中怎样进行fisher精确概率法统计.docx》由会员分享,可在线阅读,更多相关《spss中怎样进行fisher精确概率法统计.docx(23页珍藏版)》请在冰豆网上搜索。

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

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

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

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

个独立样本率比较的χ2检验属四格表资料χ2检验。

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

  例如比较两种方法治疗某种疾病的有效率是否相同?

治疗结果如下:

        有效 无效  有效率(%)

    试验组 12  1    92.31

    对照组  3  8    27.27

  可以在SPSS中进行统计分析,具体操作详见附件中的.EXE文件。

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

第三节四格表资料的Fisher确切概率法

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

该法是由R.A.Fisher(1934年)提出的,其理论依据是超几何分布(hypergeometricdistribution),并非检验的范畴。

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

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

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

问两组新生儿的HBV总体感染率有无差别?

表8-3两组新生儿HBV感染率的比较

组别

阳性

阴性

合计

感染率(%)

预防注射组

4

18

22

18.18

非预防组

5

6

11

45.45

合计

9

24

33

27.27

一、基本思想

在四格表周边合计数固定不变的条件下,计算表内4个实际频数变动时的各种组合之概率;再按检验假设用单侧或双侧的累计概率,依据所取的检验水准做出推断。

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

如例7-4,表内4个实际频数变动的组合数共有个,依次为:

(1)

(2)

(3)

(4)

(5)

0

22

1

21

2

20

3

19

4

18

9

2

8

3

7

4

6

5

5

6

ad-bc=-198ad-bc=-165ad-bc=-132ad-bc=-99ad-bc=-66

(6)

(7)

(8)

(9)

(10)

5

17

6

16

7

15

8

14

9

13

4

7

3

8

2

9

1

10

0

11

ad-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确切概率法计算表

四格表组合

1

0

22

9

2

-198

0.00000143

2

1

21

8

3

-165

0.00009412

3

2

20

7

4

-132

0.00197656

4

3

19

6

5

-99

0.01844785

5*

4

18

5

6

-66*

0.08762728*

6

5

17

4

7

-33

7

6

16

3

8

0

8

7

15

2

9

33

9

8

14

1

10

66

0.09120390

10

9

13

0

11

99

0.01289752

*为现有样本

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

#include

#include

#include/*清屏*/

#include/*显示目录*/

#include

#defineMAX80

voidinput();/*输入数据函数*/

voidsort();/*排序数据函数*/

voidsort1();

voidsort2();

voidsort3(); 

voiddisplay();/*显示数据函数*/

voiddisplay1();

voidinsert();/*插入数据函数*/

voiddel();/*删除数据函数*/

voidaverage();/*平均值函数*/

voidfind();/*查找数据函数*/

voidfind1();

voidfind2();

voidsave();/*保存数据函数*/

voidread();/*读出数据函数*/

voiddel_file(); /*删除文件函数*/

voidmodify();/*修改文件函数*/

intnow_no=0;

structstudent

{

 intno;

 charname[20];

 charsex[4];

 floatscore1;

 floatscore2;

 floatscore3;

 floatsort;

 floatave;

 floatsum;

};

structstudentstu[MAX],*p;

main()/*主函数*/

{

intas;

 charch;

 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)

  {

    case1:

system("cls");

       input();

       break;

    case2:

system("cls");

       display();

       break;

    case3:

system("cls");

       sort();

       break;

    case4:

system("cls");

       display1();

       break;

    case5:

system("cls");

       insert();

       break;

    case6:

system("cls");

       del();

       break;

    case7:

system("cls");

       modify();

       break;

    case8:

system("cls");

       find();

       break;

    case9:

system("cls");

       read();

       break;

    case10:

system("cls");

       del_file();

       break;

    case11:

system("cls");

       save();

       break;

    case12:

system("exit");

       exit(0);

    default:

system("cls");

       gotostart;

  }

 }while

(1);/*while

(1),1表示真,所以while

(1)表示永远循环下去,一般在while

(1)的循环体内都有break或者return跳出循环*/

    /*至此功能选择结束*/

}

voidinput()/*原始数据录入模块*/

{

 inti=0;

 charch;

 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");

}

voidsort()/*排序数据函数*/

{

  structstudenttemp;

  inti,j;

  average();

  for(i=1;i

  {

   for(j=1;j<=now_no-i;j++)

     {

      if(stu[j-1].ave

        {

         temp=stu[j];

         stu[j]=stu[j-1];

         stu[j-1]=temp;

        }

     }

  }

  printf("排序以完成进入功能2可进行显示\n");

  system("pause");

  system("cls");

}

voidsort1()/*排序数据函数*/

{

 structstudenttemp;

 inti,j;

 for(i=1;i

  {

   for(j=1;j<=now_no-i;j++)

     {

       if(stu[j-1].score1

        {

           temp=stu[j];

           stu[j]=stu[j-1];

           stu[j-1]=temp;

        }

     }

  }

}

voidsort2()/*排序数据函数*/

{

   structstudenttemp;

   inti,j;

   for(i=1;i

   {

    for(j=1;j<=now_no-i;j++)

     {

       if(stu[j-1].score2

         {

          temp=stu[j];

          stu[j]=stu[j-1];

          stu[j-1]=temp;

         }

     }

   }

}

voidsort3()/*排序数据函数*/

{

   structstudenttemp;

   inti,j;

   for(i=1;i

    {

     for(j=1;j<=now_no-i;j++)

      {

        if(stu[j-1].score3

         {

           temp=stu[j];

           stu[j]=stu[j-1];

           stu[j-1]=temp;

         }

      }

    }

}

voiddisplay()/*显示数据函数*/

{

 inti;

 charas;

 average();  

 do

  {

   printf("\t\t\t班级学员信息列表\n");

   printf("\t编号\t姓名\t性别\t成绩1\t成绩2\t成绩3\t平均值\n");

   for(i=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");

}

voiddisplay1()/*显示数据函数*/

{

  inti;

  charas; 

  do

  {

    printf("\t\t\t班级学员score1成绩排序\n");

    printf("\t编号\t姓名\t性别\t成绩1\n");

    sort1();

    for(i=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

      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

      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");

}

voidinsert()/*插入数据函数*/

{

  charch;

  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输入学员成绩

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1