Processing math: 100%

实验数据独立性检验小记


Comments


2025 年 4 月
 123456
78910111213
14151617181920
21222324252627
282930  

检验A,B两组数据的相关性是实验中经常碰到的问题. 在本文中我将以具体例子来说明如何在Excel中做独立性测试, 这里我用的是卡方检验.

卡方做独立性检验举例

Example . 假设A,B两组数据如下(完整的数据可以看文末的xls附件), 教程中只以图形的方式加以说明:

卡方独立性检验data

试用卡方检验来说明A1B1是否是相关的.

当然, 这里1的选取是有相应的实际意义的, 需要根据你的实验做相应的调整. 但是一般都是对照实验, 因此这里AaBba应该等于b, 否则不能作为对照.

统计小知识

关于卡方检验的一点小知识.

Remark .我们必须注意, 统计检验相对于反证法. 我们想要说明数据是相关的, 从而在用统计规律作为工具时, 我们反设数据是独立的(作为H0假设).

我们将利用Excel计算卡方统计值χ2, 并比较它与在给定的显著水平α(α一般取为0.05,0.01, 也可参考专业的数据库, 毕竟各行各业不一样)下的临界值χ2α的大小. 如果χ2<χ2α, 则接受H0假设(此时统计推断的结论是数据是独立的), 否则拒绝H0假设(此时统计推断的结论是数据是相关的).

计算实际频数与理论频数

根据卡方统计量的计算公式:

χ2=ri=1cj=1(AijEij)2Eij,
这里, r为行数, c为列数, 而Aij为第ij列的实际频数, Eij为其理论频数.

从公式(1), 我们知道需要计算上面两组数据的实际频数与理论频数.

实际频数的统计

利用Excel的COUNTIFS函数可以非常方便的统计实际频数.

  • 在Excel中按照下图做好表格, 最好保持单元格一致, 即从H2K6的范围, 这在后面公式的引用时, 可以方便地和文中对照.
    卡方独立性检验实际频数表
  • I4中录入=COUNTIFS($A$1:$A$50,">=1",$B$1:$B$50,">=1")它表示统计$$A列数据(从A1A50中满足1B列数据中满足1的数据的个数).
  • 同样的道理, 在J4中录入=COUNTIFS($A$1:$A$50,"<1",$B$1:$B$50,">=1");在I5中录入=COUNTIFS($A$1:$A$50,">1",$B$1:$B$50,"<1");在J5中录入=COUNTIFS($A$1:$A$50,"<1",$B$1:$B$50,"<1").
  • 为了计算理论频数, 我们首先需要对实际频数的各行以及各列求和: 在K4中录入=SUM(I4:J4)计算第一行的和; 在K5中录入=SUM(I5:J5)计算第二行的和;在I6中录入=SUM(I4:I5)以计算第一列的和, 在J6中录入=SUM(J4:J5)计算第二列的和.
  • K6中录入=SUM(J4:J5)来计算各行各列数据的和.
  • 计算结果参考下图, 称为实际频数表或者列联表
    卡方独立性检验实际频数
理论频数的计算

各个步骤可以参考下表(最终效果图)执行:
卡方独立性检验结果

  • I11中录入=I6*K4/$K$6以计算第一行第一列这个单元格的理论频数, 这里规律(or公式)就是计算(i,j)(表示ij列)位置的理论频数, 我们是将i所在行的和乘以j所在列的和再除以各行各列的总和.
  • 同样的道理, 在J11中录入=J6*K4/$K$6; 在I12中录入=I6*K5/$K$6; 在J12中录入=J6*K5/$K$6. 这样就计算好了理论频数.

卡方统计值的计算

由于Excel直接计算的是卡方统计量所对应的概率值, 因此我们需要先利用CHISQ.TEST计算概率值, 再利用CHISQ.INV计算卡方统计值.

  • J13中录入=CHISQ.TEST(I4:J5,I11:J12), 实际上I4:J5就是实际频数的数据块, 而I11:J12就是理论频数的数据块, 公式录入过程中都可以直接用鼠标选择数据块的哈.结果自然是给出卡方统计量的概率值了. (这里稍微有点奇怪(如果你不觉得, 完全可以不看我觉得奇怪的地方, 这毫无影响), 就是Excel可以根据你所选区域而知道自由度, 而公式(1)确不需要自由度就可以计算, 至于为什么Excel要直接计算概率而不直接计算统计量似乎不好理解, 因为从统计量计算相应的概率还需要知道自由度, 这就是我奇怪之处. )
  • 计算自由度df=(r1)(c1), 这里行数r=2, 列数c=2, 故df=1.
  • 利用CHISQ.INV计算相应的统卡方计值:在J14中录入=CHISQ.INV(1-J13,1). 这里J13是概率值, 而1是自由度df. 之所以要用1-J13是因为CHISQ.INV给出的是累计密度下的卡方值.
  • J15中设置临界水平为0.05.
  • J16中计算在给定的临界水平下相应的临界值:=CHISQ.INV(1-J15,1)
  • 比较统计值与临界值的大小, 得到是否接受H0假设. 在J16中录入=IF(J14<J16,"是",否), 即若统计值小于临界值, 则表明在给定的显著水平下, 数据的差异不显著, 从而接受H0; 否则拒绝H0
  • J17z中录入=IF(J17="是","否","是")以根据是否接受H0来判断数据是否相关. 即在接受H0时表明数据在给定显著水平下不相关, 而在拒绝H0时表明数据在给定显著水平下相关.

Remark .

  • 上面的过程实际上可以推广到多于22列的情形, 没有实质差异.
  • 在具体应用时, 若还是两行两列的情形, 则只需利用COUNTIFS重新计算实际频数, 其他地方会自动计算, 不用更改.
  • 需要计算不同显著水平, 只需把0.05换成其它显著水平即可, 后面的结果会自动改变.

若你还有任何疑问, 欢迎留言讨论.

最终的Excel(2013)文件:

本作品采用创作共用版权协议, 要求署名、非商业用途和保持一致. 转载本站内容必须也遵循署名-非商业用途-保持一致的创作共用协议.

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据


Other news