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

使用group_by和summarise分析SPSS数据集的相关性与显著性检验问题

问题1:cor()与correlate()的差异及NA原因
  • 核心差异在缺失值处理逻辑:
    • cor()是base R自带函数,默认参数use = "everything"——只要输入向量里存在NA,就直接返回NA。你的分组数据中某个性别组的toptim或tnegaff有缺失值,因此触发该逻辑返回NA。
    • correlate()是corrr包的函数,默认参数use = "pairwise.complete.obs"——会自动剔除两个变量中存在缺失值的观测,仅用完全配对的有效数据计算相关性,因此能得到有效结果。
  • 验证方法:给cor()指定缺失值处理参数,cor(toptim, tnegaff, use = "pairwise.complete.obs"),即可得到与correlate()一致的结果。
问题2:cor.test()分组检验的报错解决
  • 报错原因:cor.test()返回的是htest类对象(包含相关系数、p值、置信区间等多维度结果),而dplyr::summarise()要求每个汇总结果是长度为1的向量,无法直接接收复杂对象,因此报错。
  • 正确处理方法:
    用broom::tidy()将htest对象转换为结构化数据框,结合dplyr语法提取所需统计量:
    library(broom)
    library(dplyr)
    
    df %>%
      group_by(sex) %>%
      summarise(tidy(cor.test(toptim, tnegaff)), .groups = "drop")
    
    运行后会得到包含estimate(相关系数)、p.value(显著性p值)、置信区间等列的数据框,可直接提取预期的p值。
  • 之前tidy处理失败的可能原因:
    • 未正确将tidy()嵌套在summarise()中,或未加载broom包导致函数未识别;
    • 某个性别组样本量过小(n<2),cor.test()无法完成计算,导致tidy()处理后返回NA,需检查分组样本量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 10:10:29