R语言执行Spearman重测信度分析提示x必须为数值向量问题
报错原因
- R基础包的
cor.test()函数仅支持输入一维数值向量计算相关,你传入的colA、colB均为7行42列的二维tibble(数据框)结构,不符合函数参数要求,因此触发'x' must be a numeric vector报错,和变量本身是否为数值类型无关。
解决方法
根据你的重测信度分析需求,有两种常用实现方案:
方案1:计算量表总分的重测信度
直接提取两份数据集的总分列做 Spearman 相关检验即可,代码如下:
cor.test(colA$Vtotal, colB$Vvtotal, method = "spearman")
方案2:批量计算所有题项/维度的重测信度
如果需要逐列计算两次测量对应题项/维度的相关系数,可以用循环批量处理:
# 按列顺序逐列计算Spearman相关 spearman_result <- sapply(1:ncol(colA), function(idx) { cur_test <- cor.test(colA[[idx]], colB[[idx]], method = "spearman") return(c( 第一次测量列名 = colnames(colA)[idx], 第二次测量列名 = colnames(colB)[idx], 相关系数 = round(cur_test$estimate, 4), p值 = round(cur_test$p.value, 4) )) }) # 转换为数据框方便查看 spearman_result <- as.data.frame(t(spearman_result))
注意事项
当前样本量仅为7例,样本量过小会导致Spearman相关的显著性检验效力极低,结果解释需要谨慎。
内容的提问来源于stack exchange,提问作者Hani
相关产品推荐
相关产品推荐

