注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

零售创新,创新那些事儿,SPSS,VBA

零售创新

 
 
 

日志

 
 
关于我

新浪微博,零售创新 研究经理,数据分析师 希望和市场研究和零售业的同事共同进步! 本博客发表的都是免费或试用的资料,如果有版权问题请发邮件wangli12a@163.com联系删除。 spss excel vba blog

网易考拉推荐

Excel在四格表检验中的应用  

2009-02-17 16:15:26|  分类: VB和VBA知识 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

目的:应用Excel对四格表检验的数据进行处理。方法:根据四格表检验计算原理,利用Excel函数及自定义函数功能编制算法程序,制成模板保存。结果:应用时录入数据即可得到统计分析结果,表格简洁明了,具有自明性。结论:Excel操作简单,功能强大,数据分析精确,可作为四格表检验的理想手段。

【关键词】  Excel 四格表检验 数据处理

  医药学工作者在工作和研究中经常需要对数据作统计分析,四格表检验是医药工作中常用的统计学手段,采用的方法包括Pearson拟合优度χ2检验,校正的χ2检验,Fisher的精确检验(双侧检验及单侧检验)。尽管目前有多种优秀的统计专业软件如SAS、SPSS等可供选用,但是这些专业软件往往系统庞大、结构复杂,其中大多数内容只适用于专业统计人员,且价格不菲,一般的应用者难以获得。Excel是Microsoft Office软件的主要组成部分,是目前应用最普遍的电子表格软件。它具有强大的数据处理与分析能力,在统计分析中有着广泛的应用。本研究根据四格表检验计算原理,通过对Excel的模板编制特别是自定义函数的使用,实现对四格表检验的数据进行处理,具有操作简单,使用方便,数据分析精确的优点。

  1  计算公式及适用条件[1]

    四格表的数据分布见表1 ,其自由度ν=1。表1  四格表数据示意(略)

    Pearson拟合优度χ2检验计算公式为:χ2=n(ad-bc)2(a+b)(c+d)(a+c)(b+d)。适用条件为:样本容量n>40,最小理论频数T>5,且χ2值远大于3.841(即P值远小于0.05)。
    校正的χ2检验计算公式为:χ2=n(|ad-bc|-0.5n)2(a+b)(c+d)(a+c)(b+d)。适用条件为:样本容量n≥40,最小理论频数1≤T≤5,或满足n>40、T>5但χ2值仅稍大于3.841。也有人认为四格表的自由度ν=1,即宜采用校正公式[2]。该计算模板笔者曾有过研究[3]。

    Fisher的精确检验(双侧检验及单侧检验):R. A. Fisher(1934)认为,当(a+b)、(c+d)、(a+c)、(b+d)这四个边缘合计给定后,a、b、c、d四个数中只有一个可自由取值,不妨认定为a,当a取不同的可能值(使得满足a、b、c、d中任何一个均为非负数)时,就可派生出一系列的四格表,其概率分布由古典概型可知P(a)= (a+b)!(c+d)!(a+c)!(b+d)!a!b!c!d!n!。计算出所有可能的P(a)。记实际观察到的a为a0。若按双侧检验来讨论,任何 P(a)≤P(a0)者均有利于拒绝分类原则独立性假设,其概率之和即为所求概率。若按单侧检验来讨论,a/(a+b)>c/(c+d)时任何 P(a≥a0)≤P(a0)者均有利于拒绝分类原则独立性假设,a/(a+b)

  2  模板编制

  2.1  数据录入
  
  2.2  编辑公式

    在相应单元格录入计算公式,见表2。单击菜单栏“工具”,单击下拉菜单“宏”,单击“Visual Basic 编辑器”,在编辑器窗口插入模快,建立自定义函数MyFisher()、MyFact(),源程序清单如下: 表2  计算公式(略)

      Private Function MyFisher(ByVal a%, ByVal b%, ByVal c%, ByVal d%, Optional SingleSide As Boolean) As Double
      Dim P0#, Pa#, Temp1%, Temp2%
      MyFisher = 0
      P0 = MyFact(a, b, c, d)
      Temp1 = IIf(a < d, 0, a - d)
      Temp2 = IIf(b < c, a + b, a + c)
      If Not IsMissing(SingleSide) And SingleSide Then
          If a / (a + b) > c / (c + d) Then Temp1 = a
          If a / (a + b) < c / (c + d) Then Temp2 = a
      End If
      For i = Temp1 To Temp2
          Pa = MyFact(i, a + b - i, a + c - i, d - a + i)
          If Pa <= P0 Then MyFisher = MyFisher + Pa
      Next i
      End Function
  
        Private Function MyFact(ByVal a%, ByVal b%, ByVal c%, ByVal d%) As Double
      Dim P(1 To 7) As Double
      For i = 1 To 7
          P(i) = 1
      Next i
      For i = a + 1 To a + b
          P(1) = P(1) * i
      Next i
      For i = b + 1 To b + d
          P(2) = P(2) * i
      Next i
      For i = c + 1 To c + d
          P(3) = P(3) * i
      Next i
      For i = a + c + 1 To a + b + c
          P(4) = P(4) * i
      Next i
      For i = a + b + c + 1 To a + b + c + d
          P(5) = P(5) * i
      Next i
      For i = 1 To Int(d / 2)
          P(6) = P(6) * i
      Next i
      For i = Int(d / 2) + 1 To d
          P(7) = P(7) * i
      Next i
      MyFact = 1 / P(4) * P(1) / P(5) * P(2) / P(6) * P(3) / P(7)
      End Function

  2.3  工作表的保护

    为避免误操作对计算公式造成破坏,需对工作表进行保护,选定数据录入单元格C3、C4、E3、E4,单击菜单栏“格式”,单击下拉菜单“单元格”,单击“ 保护”,去掉锁定复选框的“√”;单击菜单栏“工具”,单击下拉菜单“保护”,单击“保护工作表”。这样,只有数据录入单元格可以录入数据,其他单元格处于保护状态。将工作表命名为“四格表检验”以模板形式保存。

  3  工作表使用

    Excel模板建立后,每次使用只需运行“四格表检验”,在数据录入单元格录入数据,即可自动进行数据处理,得到所有4种方法的计算结果。值得提出的是,经过程序改良(自定义函数MyFact()),突破Fisher精确检验时数据容量受微机阶乘数的极限170的限制(Microsoft Excel 中表示的数字应介于-1*10307 和+1*10307之间,太大或太小均不被容纳,而171!>1*10307),对于较大的四格表亦可运算自如。若超出计算容量把较大的结果放在“阳性” 项下可能重新得以计算。在“P值”计算中用到的“CHIDIST()”函数是Excel提供的返回χ2分布单尾概率的函数,可通过χ2值与自由度直接计算出P值,避免了查χ2分布界值表的麻烦与不精确,体现了Excel 的优越性。该应用程序经调试正确,计算结果精确,可供同行使用。
  评论这张
 
阅读(1751)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017