当前位置:首页 > 测试测量 > 测试测量
[导读] 在生命科学及社会科学研究中,卡方(χ2)检验是最常用的统计分析方法之一[1-8]。卡方(χ2)检验是次数资料的显著性检验方法,包括适合性检验和独立性检验两类[9]。适合性检验用于检验某性状观察次数与该性

 在生命科学及社会科学研究中,卡方(χ2)检验是最常用的统计分析方法之一[1-8]。卡方(χ2)检验是次数资料的显著性检验方法,包括适合性检验和独立性检验两类[9]。适合性检验用于检验某性状观察次数与该性状的理论比率是否符合,如在遗传分析中研究两对性状杂种后代的分离现象是否符合某一特定比率;而独立性检验是用于判断两类因子是彼此相关还是相互独立的,如:采用某种措施与预防某种灾害的关系。
卡平方的计算很复杂,但随着计算机与统计软件的普及,应用计算机计算卡平方成为最准确可靠的方法,各种大型统计软件如SAS、SPSS、DPS等均应用于卡平方的测算[10-12],一些研究者也研发了在Excel上编制运算表来实现卡平方测算的方法[13]。
 使用如SAS、SPSS、DPS等大型统计软件需要有较高花费;采用R统计软件来编程进行卡平方测算要求研究者有较强学术底蕴和计算机编程能力。这在客观上限制了SAS、SPSS、DPS、R等统计软件的普及应用。Excel作为 Microsoft Office 家族成员,由于多数学生和科研人员都具有Excel基础知识,采用Excel软件计算卡平方无需考虑运行环境而受到欢迎。然而,采用编制运算表的方法还是让人感到有些繁锁,不易学习使用。鉴于此,本文采用一种基于Excel的VBA编程方法[14-15],编写了“卡平方测算”相关程序,可在所有配备Office 2000以上版本的计算机上使用。“卡平方测算”在VBA程序运算时只需输入最原始的数据,应用步骤实行最直观的人机对话,任何初学者都可以即学即用轻松地掌握程序的使用方法;编写完的程序成为工作模板后,可以任意复制或通过e-mail邮寄等方式进行传播、拷贝,因此这种方法受到使用者的一致好评。
本文介绍了该程序的源代码及使用方法,让所有不方便使用大型统计软件的同行都可分享这些程序带来的所有便利。
1 VBA程序源代码
1.1 用于适合性检验的卡平方计算程序

Private Sub CommandButton1_Click()
Dim n As Integer
n=InputBox("请输入数据组数n=?")
Cells(1,2).Value=("数据组数n")
Cells(2,2).Value=n
Dim a0(0 To 99)As Single
Dim al(0 To 99)As Single
Dim x2 As Integer
Cells(1,3).Value="实测值a0"
Cells(1,4).Value="理论值al"
Cells(1,5).Value="卡平方值x2"
For i=1 To n
a0(i)=InputBox("请输入实测值的第"& i &"个样本值")
Cells(1+i,3).Value=a0(i)
Next i
For i=1 To n
al(i)=InputBox("请输入理论值的第"& i &"个样本值")
Cells(1+i,4).Value=al(i)
Next i
x=0
For i=1 To n
x=x+((a0(i)-al(i))^2)/al(i)
Next i
Cells(2,5).Value=x
End Sub
1.2 用于独立性检验的卡平方计算程序
1.2.1 2×2表的独立性测验

Private Sub CommandButton1_Click()
Dim a  As Integer :Dim b  As Integer:Dim a0  As             Integer:Dim b0  As Integer
Dim n As Integer
Dim a1 As Single:Dim b1 As Single:Dim a01 As             Single:Dim b01 As Single
Dim E11 As Single:Dim E12 As Single:Dim E21 As             Single:Dim E22 As Single
Dim c1  As Single:Dim c2 As Single:Dim c3  As             Single:Dim c4 As Single
Dim x As Single
a=InputBox("请输入A事件效果1数字a=?")
Cells(1,1).Value="A事件效果1数a"
Cells(2,1).Value=a
b=InputBox("请输入B事件效果1数字b=?")
Cells(1,2).Value="B事件效果1数字b"
Cells(2,2).Value=b
a0=InputBox("请输入A事件效果2数字a0=?")
Cells(1,3).Value="A事件效果2数a0"
Cells(2,3).Value=a0
b0=InputBox("请输入B事件效果2数字b0=?")
Cells(1,4).Value="B事件效果2数字b0"
Cells(2,4).Value=b0
n=a0+b0+a+b
aa0=a+a0:bb0=b+b0:ab=a+b:a0b0=a0+b0
E11=aa0*ab/n:E12=aa0*a0b0/n
E21=bb0*ab/n:E22=bb0*a0b0/n
c1=Abs(a-E11):c2=Abs(a0-E12):c3=Abs(b-E21):c4=Abs(b0-E22)
x=((c1-0.5)^2)/E11+((c2-0.5)^2)/E12+((c3-0.5) ^2)/E21+((c4-0.5)^2)/E22
Cells(1,5).Value="卡平方值x2"
Cells(2,5).Value=x
End Sub
1.2.2 2×c表的独立性测验
Private Sub CommandButton1_Click()
Dim C As Integer :Dim R As Single :Dim d As             Single:Dim h As Single
Dim x As Single
Dim a0(0 To 99) As Single :Dim b0(0 To 99) As         Single:Dim g(0 To 99) As Single
C=InputBox("请输入数据组数C=?")
Cells(1,2).Value=("数据组数C")
Cells(2,2).Value=C
Cells(1,3).Value="A事件数值a0"
Cells(1,4).Value="B事件数值b0"
Cells(1,5).Value="a(i)+b(i)"
R1=0]:R2=0
For i=1 To C
a0(i)=InputBox("请输入A事件数值的第("& i &")            个样本a0("& i &")=?")
Cells(1+i,3).Value=a0(i)
b0(i)=InputBox("请输入B事件数值的第("& i &")            个样本b0(" & i & ")=?")
Cells(1+i,4).Value=b0(i)
g(i)=a0(i)+b0(i)
Cells(1+i,5).Value=g(i)
R1=R1+a0(i):R2=R2+b0(i)
Next i
R=R1+R2
Cells(1,6).Value="A事件数值之和,R1"
Cells(1,7).Value="B事件数值之和,R2"
Cells(1,8).Value="AB事件所有数值之和,R"
Cells(2,6).Value=R1:Cells(2,7).Value=R2:Cells                (2,8).Value=R
h=0
For i=1 To C
h=h+a0(i)^2/g(i)
Next i
x=(h - R1 ^ 2 / R) * R ^ 2 / R1 / R2
Cells(1,9).Value=" 卡平方值x2"
Cells(2,9).Value=x
End Sub
1.2.3 r×c表的独立性测验
Private Sub CommandButton1_Click()
Dim C As Integer:Dim R As Integer :Dim n As             Single:Dim h As Single
Dim x As Single
Dim a(0 To 99,0 To 99) As Single
Dim g(0 To 99) As Single
Dim k(0 To 99) As Single
C=InputBox("请输入数据组数C=?")
Cells(1,2).Value=("数据组数C")
Cells(2,2).Value=C
R=InputBox("请输入数据组数R=?")
Cells(1,3).Value=("数据组数R")
Cells(2,3).Value=R
Cells(1,4).Value=" Gi数值"
Cells(1,5).Value=" Kj数值"
Cells(1,6).Value=" 所有数字之和,n"
For i=1 To C
For j=1 To R
a(i,j)=InputBox("请输入第(" & i & ")行,第("& j         & ")列的样本数值a(i,j)=?")
Next j
Next i
For i=1 To C
For j=1 To R
g(i)=g(i)+a(i,j)
Cells(1+i,4).Value=g(i)
Next j
Next i
For j=1 To R
For i=1 To C
k(j)=k(j)+a(i,j)
Cells(1+j,5).Value=k(j)
Next i
Next j
For i=1 To C
n=n+g(i)
Next i
Cells(2,6).Value=n
h=0
For i=1 To C
For j=1 To R
h=h+a(i,j)^2/g(i)/k(j)
Next j
Next i
x=n * (h-1)
Cells(1,9).Value=" 卡平方值x2"
Cells(2,9).Value=x
End Sub
2 “卡平方测算”VBA程序的应用步骤:
 (1)运行环境:Win2003、WinXP、Win2000等。
 (2)VBA程序的应用步骤:打开Excel“EC50、EC90测算”程序工作簿(在此过程中,若计算机屏幕显示对话框,则应选择并点击“启用宏”),单击(程序运行命令)按钮(本程序中该按钮上面写着“计算”),则程序开始运行计算机,屏幕依次出现对话框,按对话框所提问题逐个输入数据,输完后瞬间即在程序工作簿页面上显示输出结果(包括卡平方值)。
 (3)“卡平方测算”VBA程序的下载及拷贝方法:①下载源程序的方法参见文献[6-7];②“卡平方测算” 文件的再拷贝:上述工作完成后,此Excel文件即成为一个工作模板,可以任意复制、粘贴或通过e-mail邮寄等方式进行传播和拷贝。
 本Excel文件所占内存约为60 KB,与其他有类似功能的程序相比要小得多。上述4个程序也可以组合成一个较大的程序,但从应用角度考虑,这样做会浪费计算机的内部资源(因为事先声明了较多在当次运算中并不使用的变量),故本文未这样处理。
参考文献
[1] 武晓玲,周斌,孙石,等.大豆对大豆疫霉菌株Pm14抗性的遗传分析及基因定位[J].中国农业科学,2011,44(3):456-460.
[2] 王保通,李强,胡茂林,等.小麦品种Libellula和N. strampelli抗条锈病主效、微效基因遗传分析[J].植物病理学报,2010,40(3):300-306.
[3] 张宏,任志龙,胡银岗,等.陕麦139抗条锈病基因遗传分析[J].作物学报,2010,36(1):109-114.
[4] 何丽华,牛宝龙,齐晓朋,等.棉铃虫成虫体色突变体的发现及其遗传分析[J].核农学报,2007(4):397-400.
[5] 杨振宇,王晓丽,张晓波,等.部分抗SMV大豆品种成株抗性基因对数分析[J].吉林农业大学学报,2011,33(6):591-594.
[6] 龚瑞,杨炬,黎唏,等.2007-2010年度宁夏流感监测结果分析[J].宁夏医学杂志,2011,33(3):222-224.
[7] 钱峰.基于卡方检验的国内外知识管理研究热点比较[J].情报杂志,2008(9):56-58.
[8] 徐向阳.卡方检验在学生成绩差异性分析中的应用[J].常州技术师范学院学报,2001,7(4):13-16.
[9] 盖钧镒.试验统计方法[M].北京,中国农业出版社,2000.
[10] 詹秋文.Excel和SAS在生物统计学的应用比较[J].生物学杂志,2009,26(1):74-75,83.
[11] 向穷,施树良,李钰.常用统计软件在生物统计中的应用比较[J].现代生物医学进展,2009,9(9):1775-1777,1789.
[12] 唐启义,冯明光.实用统计分析及其DPS数据处理系统[M].北京:科学出版社,2002:188-95.
[13] 谭永强,余华强,陈桥生,等.利用Excel软件建立卡方检验分析模板在农业统计中的应用[J].湖北农业科学,2010,49(12):3192-3195.
[14] 龚沛曾,陆慰民.Visual Basic程序设计教程(6.0版)[M].北京:高等教育出版社,2001.
[15] 李晓玫,杨小平.Excel中的VBA程序设计[J].四川师范大学学报(自然科学版),2004(4):423-426.
[16] 马海霞,刘 影,王艳红,等.用EXCEL中的VBA编写“多项式的三角函数拟合单峰曲线”程序[J].菌物研究,2009,7(3-4):195-200.
[17] 段显德,王艳红,杨信东.用EXCEL中的VBA编写“试卷分析”程序[J].通化师范学院学报,2010,31(8):52-53.

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

常州2023年9月25日 /美通社/ -- 9月23日,由江苏省商务厅指导,世界中餐业联合会、常州市人民政府主办的"第三届中华节气菜大会暨首届江南美食节"在江苏常州开幕。文化和旅游部国际交流与合作局一...

关键字: BSP 可持续发展 大赛 质量控制

北京2023年9月25日 /美通社/ -- 9月21日,由中国质量报刊社·中国质量新闻网主办的第六届食品高质量发展交流会在北京举行,会议主题为"高质量,新生活",旨在推动食品行...

关键字: 自动化 BSP ISO9001 NAS

北京2023年9月23日 /美通社/ -- 近日,主线科技正式获准在北京市智能网联汽车政策先行区道路开启常态化测试与示范,将与物流客户在真实开放的城区道路场景中,率先开启基于L4级别自动驾驶能力的智能卡车运输示范。 随...

关键字: 智能卡 测试 高速公路 BSP

曼谷2023年9月18日 /美通社/ -- 作为东南亚的旅游胜地,泰国一直在全球范围内吸引着无数游客的目光。泰国旅游和体育部近日公布的报告显示,今年前7个月,泰国旅游业总收入约为1.08万亿泰铢(约合人民币2233亿元)...

关键字: BSP GEN 国美 AN

哥伦比卡尔达斯2023年9月22日 /美通社/ -- 近日,天合跟踪与中国电建签订拉美地区哥伦比亚泰普伊光伏电站跟踪支架供货协议,将为其提供108MW智能跟踪系统,其中包含开拓者1P智能跟踪支架、智能算法、以及智慧云平台...

关键字: 光伏电站 跟踪系统 控制器 BSP

2型炎症领域新突破 上海2023年9月22日 /美通社/ -- 赛诺菲今天宣布,达必妥®(度普利尤单抗注射液)获得中国国家药品监督管理局(NMPA)批准,用于治疗适合系统治疗的中度至重度结节性痒疹的成...

关键字: PRIME BSP REPORT SAR

欧莱雅中国旗下上海美次方投资有限公司达成首次开放式创新投资 法国克里希2023年9月22日 /美通社/ -- 欧莱雅集团宣布对中国创新型生物科技公司杉海创新进行少数股权投资,以建立长期合作伙伴关系,共同开发新...

关键字: AN BSP DEVELOPMENT FOR

赋能企业实现业务数据的可识别、可见、可协作和安全数据的可操作 北京2023年9月22日 /美通社/ -- 亚马逊云科技持续加速分析与安全服务创新,守护安全基座,助力企业进一步释放数据要素价值,实现创新增长。在数字经济时...

关键字: 亚马逊 BSP 生成式AI SECURITY

重庆2023年9月22日 /美通社/ -- 全球领先的高端半导体封装载板和印制电路板制造商奥特斯连续第八年受邀,出席重庆市市长国际经济顾问团于9月22日举行的第十七届年会。 奥特斯连续第八年受邀,出席重庆市市...

关键字: BSP 印制电路板 微型 微电子

科威特科威特城2023年9月21日 /美通社/ -- 秉承去年突破性科技、金融和数字银行创新峰会的势头,/MoneyTech将于11月12日重返科威特。  请在 aljaridasummits.com ...

关键字: MONEY TE BSP MIT
关闭
关闭