You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

含缺失值的有序数据性别相关性检验技术问询

问题解答

1. cor()返回NA的原因

cor()函数默认参数use="everything",意思是只要输入的变量对里存在任何缺失值(NA),就直接返回NA。而cor.test()默认会自动剔除包含NA的观测行(参数na.action=na.omit),仅用完全配对的有效数据计算,所以能得到结果。这是两个函数处理缺失值的逻辑差异导致的,不属于操作失误。

要是想让cor()也返回有效结果,可以手动设置缺失值处理参数,比如:

cor(data$sex, data$T1, method="kendall", use="pairwise.complete.obs")

该参数会只保留两个变量都无缺失的观测来计算相关系数。

2. cor.test()的结果是否可靠?

只要剔除缺失值后的有效样本量不是过小(比如至少几十例),这个结果是可靠的。你可以用下面的代码检查有效样本量:

sum(complete.cases(data$sex, data$T1))

Kendall tau本身就是为有序变量设计的非参数相关系数,适配性别(二分类变量,当作有序处理无问题)和有序特质的相关性分析,只要有效样本量足够,计算和显著性检验都是有效的。

3. 不二分化有序数据的其他检验方法

除了Kendall tau,还有这些适配的方法:

  • Spearman秩相关系数:和Kendall tau类似的非参数方法,同样适配有序变量,用法一致,只需把method设为"spearman",注意设置缺失值处理参数即可。
  • 有序逻辑回归:把性别作为自变量(可编码为0/1或保留1/2),有序特质作为因变量,用MASS包的polr()函数实现。它能给出性别对特质等级的预测效应(对数优势比),比单纯的相关系数提供更丰富的统计信息。示例代码:
    library(MASS)
    model <- polr(as.factor(T1) ~ sex, data = data, na.action = na.omit)
    summary(model)
    
  • Cochran-Armitage趋势检验:专门针对二分类自变量+有序因变量的情况,检验因变量的等级是否随自变量分组呈现趋势性变化。可以用DescTools包的CochranArmitageTest()函数实现:
    library(DescTools)
    CochranArmitageTest(table(data$sex, data$T1))
    
  • Mann-Whitney U检验:把性别看作二分组变量,检验两组的有序特质分布是否存在差异,用法如下:
    wilcox.test(T1 ~ sex, data = data, na.action = na.omit)
    

内容的提问来源于stack exchange,提问作者Octtta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 01:37:38