RStudio中cramersV计算同一离散变量相关性输出非1问题咨询
相同离散变量计算Cramer's V结果不为1的原因
1. 2×2列联表默认启用连续性校正
R中主流的cramersV实现(如lsr、rcompanion包的同名函数)针对2×2列联表默认会开启耶茨连续性校正,该校正用于降低离散计数数据卡方检验的高估偏差,会主动调低卡方统计量的计算结果。
Cramer's V的计算公式为:V = √(χ² / (n * min(k-1, r-1)))
其中χ²是列联表卡方值,n为总样本量,k、r分别是列联表的行列数。当两个变量完全一致时,原始卡方值等于总样本量n,理论计算得到的V应为1;但开启连续性校正后卡方值会小于n,最终得到的V结果就会略低于1,和你得到的0.999左右的结果特征完全匹配。
2. 小样本偏差校正默认开启
部分版本的cramersV函数还会默认开启偏差校正逻辑,通过调整卡方值和自由度降低小样本下的指标高估,即使样本量较大时也会产生微小的数值偏差。
验证方案
调用函数时手动关闭校正参数即可得到理论值1,以lsr包的cramersV为例,代码如下:
# 关闭连续性校正 cramersV(x, x, correct = FALSE)
如果所用函数支持偏差校正开关,同步关闭即可完全消除偏差。
内容的提问来源于stack exchange,提问作者userLx
相关产品推荐
相关产品推荐

