spss中怎样进行fisher精确概率法统计_第1页
spss中怎样进行fisher精确概率法统计_第2页
spss中怎样进行fisher精确概率法统计_第3页
spss中怎样进行fisher精确概率法统计_第4页
spss中怎样进行fisher精确概率法统计_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、spss中怎样进行fisher精确概率法统计最短距离法是把两个类之间的距离定义为一个类中的所有案例与另一类中的所有案例之间的距离最小者.缺点是它有链接聚合的趋势,因为类与类之间的距离为所有距离中最短者,两类合并以后,它与其他类之间的距离缩小了,这样容易形成一个较大的类.所以此方法效果并不好,实际中不太用. 2.最长距离法是把类与类之间的距离定义为两类中离得最远的两个案例之间的距离.最长距离法克服了最短距离法链接聚合的缺点,两类合并后与其他类的距离是原来两个类中的距离最大者,加大了合并后的类与其他类的距离. 3.平均联结法,最短最长距离法都只用两个案例之间的距离来确定两类之间的距离,没有充分利用

2、所有案例的信息,平均联结法把两类之间的距离定义为两类中所有案例之间距离的平均值,不再依赖于特殊点之间的距离,有把方差小的类聚到一起的趋势,效果较好,应用较广泛. 4.重心法,把两类之间的距离定义为两类重心之间的距离,每一类的重心是该类中所有案例在各个变量的均值所代表的点.与上面三种不同的是,每合并一次都要重新计算重心.重心法也较少受到特殊点的影响.重心法要求用欧氏距离,其主要缺点是在聚类过程中,不能保证合并的类之间的距离呈单调增加的趋势,也即本次合并的两类之间的距离可能小于上一次合并的两类之间的距离. 5.离差平方和法,也称沃尔德法.思想是同一类内案例的离差平方和应该较小,不同类之间案例的离差

3、平方和应该较大.求解过程是首先使每个案例自成一类,每一步使离差平方和增加最小的两类合并为一类,直到所有的案例都归为一类为止.采用欧氏距离,它倾向于把案例数少的类聚到一起,发现规模和形状大致相同的类.此方法效果较好,使用较广.个独立样本率比较的2检验属四格表资料2检验。这类资料在医学研究中较为多见。    例如比较两种方法治疗某种疾病的有效率是否相同?治疗结果如下:               有效   无效    有效率()      

4、  试验组   12     1        92.31        对照组    3     8        27.27    可以在SPSS中进行统计分析,具体操作详见附件中的.EXE文件。在读取统计结果时,应当注意2检验的适用条件,正确选择Pearson卡方检验、Yates校正卡方检验、Fisher精确概率法(本法不属于2检验)。第三节四格表资料的Fisher确切概

5、率法前面提及,当四格表资料中出现,或,或用公式(8-1)与公式(8-4)计算出值后所得的概率时,需改用四格表资料的Fisher确切概率(Fisher probabilities in 2×2 table)。该法是由R.A.Fisher(1934年)提出的,其理论依据是超几何分布(hypergeometric distribution),并非检验的范畴。但由于在实际应用中常用它作为四格表资料假设检验的补充,故把此法列入本章。下面以例8-1介绍其基本思想与检验步骤。例8-1 某医师为研究乙肝免疫球蛋白预防胎儿宫内感染HBV的效果,将33例HBsAg阳性孕妇随机分为预防注射组和非预防组,结

6、果见表8-3。问两组新生儿的HBV总体感染率有无差别?表8-3两组新生儿HBV感染率的比较组别阳性阴性合计感染率(%)预防注射组4182218.18非预防组561145.45合计9243327.27一、基本思想在四格表周边合计数固定不变的条件下,计算表内4个实际频数变动时的各种组合之概率;再按检验假设用单侧或双侧的累计概率,依据所取的检验水准做出推断。1各组合概率的计算在四格表周边合计数不变的条件下,表内4个实际频数,变动的组合数共有“周边合计中最小数+1”个。如例7-4,表内4个实际频数变动的组合数共有个,依次为:(1)(2)(3)(4)(5)022121220319418928374655

7、6ad-bc= -198ad-bc= -165ad-bc= -132ad-bc =-99ad-bc= -66(6)(7)(8)(9)(10)517616715814913473829110011ad-bc= -33ad-bc=0ad-bc=33ad-bc=66ad-bc= 99各组合的概率服从超几何分布,其和为1。可按公式(8-9)计算(8-9)式中,等符号的意义同表7-1;!为阶乘符号。2累计概率的计算单、双侧检验不同。设现有样本四格表中的交叉积差,其概率为,其余情况下的组合四格表的交叉积差记为,概率记为。(1)单侧检验若现有样本四格表中,须计算满足和条件的各种组合下四格表的累计概率。若,则

8、计算满足和条件的各种组合下四格表的累计概率。(2)双侧检验计算满足和条件的各种组合下四格表的累计概率。若遇到或时,四格表内各种组合的序列呈对称分布,此时按单侧检验规定条件只计算单侧累计概率,然后乘以2即得双侧累计概率。二、检验步骤本例,宜用四格表资料的Fisher确切概率法直接计算累计概率。检验步骤为:(1):,即两组新生儿HBV的总体感染率相等:,即两组新生儿HBV的总体感染率不等(2)计算现有样本四格表的和及各组合下四格表的,见表8-4。本例、。(3)计算满足条件的各组合下四格表的概率。(4)计算同时满足和条件的四格表的累计概率。本例、和满足条件,累计概率为表8-4例8-1的 Fisher

9、确切概率法计算表四格表组合102292-1980.00000143212183-1650.00009412322074-1320.00197656431965-990.018447855*41856-66*0.08762728*651747-337616380871529339814110660.0912039010913011990.01289752* 为现有样本。按检验水准不拒绝H0,尚不能认为预防注射与非预防的新生儿HBV的总体感染率不等。#include<stdio.h>#include <time.h>#include<conio.h> /*清屏*

10、/#include <stdlib.h> /*显示目录*/#include<string.h> #define MAX 80 void input(); /*输入数据函数*/void sort();/*排序数据函数*/void sort1(); void sort2(); void sort3();  void display();/*显示数据函数*/ void display1();void insert(); /*插入数据函数*/void del(); /*删除数据函数*/void average(); /*平均值函数*/void find();/*查找数

11、据函数*/void find1();void find2(); void save(); /*保存数据函数*/void read(); /*读出数据函数*/void del_file();  /*删除文件函数*/void modify(); /*修改文件函数*/int now_no=0; struct student   int no;   char name20;   char sex4;   float score1;   float score2;   float score3;   float sort;

12、  float ave;   float sum; ; struct student stuMAX,*p; main()/*主函数*/ int as;  char ch;  do      start: printf("nnnttt欢迎使用学生成绩管理系统n");        printf("nnnnnntt*按任意键继续*");       ch=getch();    &

13、#160; while(!ch);   system("cls"); /*一下为功能选择模块*/  do       printf("ntttt1.录入学员信息ntttt2.显示学员总成绩信息ntttt3.对总成绩排序ntttt4.显示学员单科成绩排序ntttt5.添加学员信息ntttt6.删除学员信息ntttt7.修改学员信息ntttt8.查询学员信息ntttt9.从文件读入学员信息ntttt10.删除文件中学员信息ntttt11.保存学员信息ntttt12.退出n");   

14、60; printf("tttt选择功能选项(输入所选功能前的数字):");     fflush(stdin);    /*可用可不用,用于清除缓存防止下次用scanf输入是出现错误*/     scanf("%d",&as);     switch(as)            case 1:system("cls");         

15、;     input();              break;        case 2:system("cls");              display();              break;       case 3:system("c

16、ls");              sort();              break;       case 4:system("cls");              display1();              break; 

17、      case 5:system("cls");              insert();              break;       case 6:system("cls");              del();      &

18、#160;       break;        case 7:system("cls");              modify();              break;        case 8:system("cls");          &

19、#160;   find();              break;        case 9:system("cls");              read();              break;        case 10:system("cls&qu

20、ot;);              del_file();              break;        case 11:system("cls");              save();              break;   &

21、#160;    case 12:system("exit");              exit(0);        default:system("cls");              goto start;      while(1);/*while(1),1表示真,所以while(1)表示永远循环下去,一般在whi

22、le(1)的循环体内都有break 或者return 跳出循环*/        /*至此功能选择结束*/ void input()/*原始数据录入模块*/   int i=0;   char ch;   do              printf("tttt1.录入学员信息n输入第%d个学员的信息n",i+1);          printf("n输入学生编号:"

23、;);          scanf("%d",&stui.no);          fflush(stdin);          printf("n输入学员姓名:");          fflush(stdin);          gets();    

24、      printf("n输入学员性别:");          fflush(stdin);          gets(stui.sex);          printf("n输入学员成绩1:");          scanf("%f",&stui.score1);   

25、0;      printf("n输入学员成绩2:");          fflush(stdin);          scanf("%f",&stui.score2);          printf("n输入学员成绩3:");          fflush(stdin);   &#

26、160;      scanf("%f",&stui.score3);          printf("nn");          i+;          now_no=i;          printf("是否继续输入?(Y/N)");        

27、  fflush(stdin);          ch=getch();          system("cls");        while(ch!='n'&&ch!='N');    system("cls"); void sort()/*排序数据函数*/     struct student temp; &#

28、160;   int i,j;     average();    for(i=1;i<now_no;i+)           for(j=1;j<=now_no-i;j+)                       if(stuj-1.ave<stuj.ave)               &#

29、160;                   temp=stuj;                   stuj=stuj-1;                   stuj-1=temp;                    

30、               printf("排序以完成进入功能2可进行显示n");    system("pause");    system("cls"); void sort1()/*排序数据函数*/   struct student temp;   int i,j;   for(i=1;i<now_no;i+)           f

31、or(j=1;j<=now_no-i;j+)                        if(stuj-1.score1<stuj.score1)                                      temp=stuj;     &

32、#160;                stuj=stuj-1;                      stuj-1=temp;                               void sort2()/*排序数据函数*/   &#

33、160;  struct student temp;      int i,j;      for(i=1;i<now_no;i+)               for(j=1;j<=now_no-i;j+)                        if(stuj-1.score2<stuj.score2) 

34、60;                                     temp=stuj;                     stuj=stuj-1;                     stuj-1

35、=temp;                                   void sort3()/*排序数据函数*/      struct student temp;      int i,j;      for(i=1;i<now_no;i+)           &#

36、160;       for(j=1;j<=now_no-i;j+)                            if(stuj-1.score3<stuj.score3)                                  

37、;       temp=stuj;                       stuj=stuj-1;                       stuj-1=temp;                         &#

38、160;             void display()/*显示数据函数*/   int i;   char as;   average();      do           printf("ttt班级学员信息列表n");       printf("t编号t姓名t性别t成绩1t成绩2t成绩3t平均值n");      

39、; for(i=0;i<now_no&&0;i+)          printf("t%dt%st%st%.2ft%.2ft%.2ft%.2fn",stui.no,,stui.sex,stui.score1,stui.score2,stui.score3,stui.ave);       printf("tt按任意键返回主菜单.");       fflush(stdin);  

40、;     as=getch();       while(!as);   system("cls"); void display1()/*显示数据函数*/   int i;    char as;      do            printf("ttt班级学员score1成绩排序n");        printf(&q

41、uot;t编号t姓名t性别t成绩1n");       sort1();       for(i=0;i<now_no&&0;i+)          printf("t%dt%st%st%.2ftn",stui.no,,stui.sex,stui.score1);        printf("ttt班级学员score2成绩排序

42、n");        printf("t编号t姓名t性别t成绩2n");       sort2();       for(i=0;i<now_no&&0;i+)           printf("t%dt%st%st%.2ftn",stui.no,,stui.sex,stui.score2);  

43、;       printf("ttt班级学员score3成绩排序n");        printf("t编号t姓名t性别t成绩3n");       sort3();       for(i=0;i<now_no&&0;i+)           printf("t%dt%st%st%

44、.2ftn",stui.no,,stui.sex,stui.score3);         printf("tt按任意键返回主菜单.");        fflush(stdin);        as=getch();        while(!as);    system("cls"); void insert()/*插入数据函数*

45、/    char ch;    do             printf("ntt输入新插入学员队信息n");         printf("n输入学生编号:");         scanf("%d",&stunow_no.no);         fflush(stdin);    

46、;     printf("n输入学员姓名:");         fflush(stdin);         gets(stunow_);         printf("n输入学员性别:");         fflush(stdin);         gets(stunow_no.sex);   

47、0;     printf("n输入学员成绩1:");         fflush(stdin);         scanf("%f",&stunow_no.score1);         printf("n输入学员成绩2:");         fflush(stdin);         scanf(

48、"%f",&stunow_no.score2);         printf("n输入学员成绩3:");         fflush(stdin);         scanf("%f",&stunow_no.score3);         printf("nn");         now_no

49、=now_no+1;         sort();         printf("是否继续输入?(Y/N)");         fflush(stdin);         ch=getch();         system("cls");            while(ch!='

50、;n'&&ch!='N'); void del()/*删除数据函数*/     int inum,i;     printf("输入要删除学员的编号:");     fflush(stdin);     scanf("%d",&inum);     for(i=0;i<now_no;i+)               if(stui.

51、no=inum)                        if(i=now_no)now_no-=1;              else                                    stui=st

52、unow_no-1;                    now_no-=1;                              sort();              break;            

53、           system("cls"); void save()/*保存数据函数*/     FILE *fp;     int i;     char filepath20;     printf("输入要保存的文件路径:");     fflush(stdin);     gets(filepath);     if(fp=fopen(file

54、path,"w")=NULL)                 printf("n保存失败!");           exit(0);           for(i=0;i<now_no;i+)                         stu

55、i.sum=stui.score1+stui.score2+stui.score3;               stui.ave=stui.sum/3;               fprintf(fp,"t%dt%st%st%.2ft%.2ft%.2ft%.2fn",stui.no,,stui.sex,stui.score1,stui.score2,stui.score3,stui.ave);   

56、60;           fclose(fp);     printf("学生信息已保存在%s中!n",filepath);     system("pause");     system("cls"); void find()/*查询函数*/     int i;     char str20,as;     do       

57、60;       printf("输入要查询的学生姓名:");         fflush(stdin);         gets(str);         for(i=0;i<now_no;i+)         if(!strcmp(,str)                

58、;           printf("t编号t姓名t性别t成绩1t成绩2t成绩3t平均值n");               printf("t%dt%st%st%.2ft%.2ft%.2ft%.2fn",stui.no,,stui.sex,stui.score1,stui.score2,stui.score3,stui.ave);            

59、        printf("tt按任意键返回主菜单.");         fflush(stdin);         as=getch();           while(!as);     system("cls"); void average()/*求平均数*/   int i;   for(i=0;i<now_no;i+) &

60、#160;           stui.sum=stui.score1+stui.score2+stui.score3;         stui.ave=stui.sum/3;     void modify()/*修改数据函数*/   int i;   char str20;   printf("输入要修改的学生姓名:");   fflush(stdin);   gets(str);   for(i=

61、0;i<now_no;i+)        if(!strcmp(,str)                 system("cls");         printf("ntt输入新插入学员队信息n");         printf("n输入学生编号:");         fflush(stdin);      

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论