R按国家分组计算age与confidence相关系数出现大量缺失值原因咨询
问题原因排查
首先可以明确:cor()返回NA和相关性大小完全无关,哪怕相关性为0,只要满足计算条件也会返回明确数值,出现NA既不代表相关性极低,你的代码核心逻辑也没有错误,是边界情况没有处理导致的,常见原因有三类:
- 变量存在缺失值:
cor()默认参数为use = "everything",只要输入的age或confidence中存在任意缺失值,就会返回NA。你可以修改代码指定缺失值处理规则,比如用双完本观测计算:correlate <- evs %>% group_by(countryname) %>% summarise(c = cor(age, confidence, use = "complete.obs")) - 分组后有效样本量不足:如果某个国家分组后,两个变量都有有效值的样本数<2,或者所有
age取值完全相同、所有confidence取值完全相同,相关系数计算时分母为0,也会返回NA。 - 变量类型错误:确认
age和confidence都是数值型变量,如果其中一个是因子型、字符型,也会导致计算失败返回NA。
快速验证方法
你可以在统计代码中加入样本量统计项,快速定位问题:
correlate <- evs %>% group_by(countryname) %>% summarise( total_n = n(), complete_n = sum(complete.cases(age, confidence)), c = cor(age, confidence, use = "complete.obs") )
查看返回结果里的complete_n列,如果数值<2,对应国家的相关系数返回NA就是正常情况。
内容的提问来源于stack exchange,提问作者Xingchen LIU
相关产品推荐
相关产品推荐

