运用PowerShell计算行×列表χ2检验
3 测试程序
3.1 例1 对648 例消化道溃疡病人住院天数分析[2]
某病案统计室对医院收治的648 例消化道溃疡病人术前住院天数进行了分析,探讨术前住院天数对住院总天数的影响,病案统计室使用第四军医大学统计教研室编制的SPLM 软件进行统计。表1 术前住院天数对住院总天数的影响(略)
此例原文中计算结果为χ2 = 97.54 , P<0.01 ,不同术前住院天数间、 住院总天数有显著性差异,说明术前住院天数直接影响住院。
现在我们在PowerShell脚本来计算,首先在控制台界面输入这个行列表的数据:
PS C:\> $rc = (115,220,105,72),(3,52,35,3),(0,3,20,20)
这里简单解释一下,这种形式的输入是PowerShell创建二维数组的一种方式,行列表中每一行的数据放在一对括号内,一行内的数据用逗号分隔,行与行之间的数据也用逗号隔开。通过这一行的输入,我们已经把行列表所有数据赋值到变量$rc中。
然后运行我们已经编写好的计算脚本kf.ps1:
PS C:\> c:\kf.ps1
您输入的是 3行* 4列表!
N=648 卡方=97.5386448154744
此例的计算结果说明PowerShell脚本编程的计算结果准确。
3.2 例2 扭挫伤患者708 人和腰肌劳损患者347人,都用磁场疗法治疗,有效(显效与好转) 人数分别为673 人和312 人,无效例数分别为35人和35人,有效率分别为95106 % 和89191 %。问两组有效率有无差别? [3]表2 两种疾病用磁场疗法的疗效(略)
检验假设H0 :两组总体有效率相等。
备择假设H1 :两组总体有效率不相等。
检验水准:双侧α= 0.05,计算结果为χ2 = 9.94,P<0.01,拒绝H0 ,认为磁场疗法对两种疾病的有效率不相同。
我们通过PowerShell脚本验证此例的计算结果,首先在控制台界面输入数据:
PS C:\> $rc = (673,35),(312,35)
运行计算脚本
PS C:\> c:\kf.ps1
您输入的是 2行* 2列表!
n=1055 卡方=9.9427369384943
本例是四格表的卡方统计问题,说明本研究的PowerShell程序同样适用于四格表卡方统计。通过以上二例的计算,我们认为通过PowerShell脚本计算行列表卡方是一种方便易用的方法。
4 讨论
以下几点是对本研究中脚本程序的总结说明:
① 如果编写的kf.ps1脚本不能运行,那么应该开启PS1脚本的运行权限,在控制台输入set-ExecutionPolicy Unrestricted 即可。微软从安全角度考虑关闭了脚本运行权限。
② 微软操作系统要求运行ps1脚本时要键入完整的路径,在本文中的完整路径是c:\kf.ps1,而不能只键入文件名kf.ps1。
③ 不少医学工作者使用Excel做卡方计算,缺点很明显,在Excel表格中对行列数的限制是预先设定的,而本研究的脚本程序没有行列数的限制,可以灵活计算多行多列的表格卡方。
④ 本研究的脚本程序只是根据公式完成了计算行列表卡方最基本的功能,在输入数据的时候请保持数据格式的正确性,因为程序对录入数据的格式不作检查。另外如果需要校正检验,可以对脚本适当改动,读者可以通过对PowerShell的学习把程序继续完善。
⑤ 本研究的脚本程序在XP SP2 PowerShell 1.0和Vista PowerShell 1.0的环境下运行通过。
【参考文献】
1 王正凯,颜景红.运用批处理完成四格表χ2检验的计算.数理医药学杂志, 2007,5:618~619 .
2 马玉荣,李健. 648 例消化道溃疡病人住院天数分析. 中国医院统计,2001,9:186.
3 潘兴仪. 卡方检验在医学科研中的应用. 广西医学, 2001,12:1397.