含缺失值的有序数据性别相关性检验技术问询
问题解答
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
相关产品推荐
相关产品推荐

