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

基于多列多行数据的评分者theta与score相关性计算问题

解决方案

要实现每个Rater对应的score集合与theta集合的相关性计算,核心是先把宽格式的评分数据转换成长格式,让每个有效评分都对应唯一的theta值,再按Rater分组计算相关性。具体步骤如下:

1. 加载工具包

使用tidyverse套件(包含dplyr和tidyr)处理数据转换与分组计算:

library(tidyverse)

2. 转换数据格式

将分散在多列的Case评分转为长格式,同时保留对应的theta和Rater信息:

long_df <- df %>%
  pivot_longer(
    cols = starts_with("Case"),  # 匹配所有以Case开头的列
    names_to = "case_id",        # 新列存储原Case列的名称
    values_to = "score"          # 新列存储评分值
  ) %>%
  filter(!is.na(score))  # 过滤无有效评分的行

执行后,每个有效评分会单独成为一行,每行包含theta、Rater、case_id和score四个字段,解决了评分分散在多行多列的问题。

3. 分组计算相关性

按Rater分组,计算每组内theta与score的相关系数,同时保留有效样本量(避免样本量不足导致计算错误):

cor_result <- long_df %>%
  group_by(Rater) %>%
  summarize(
    valid_sample_count = n(),
    theta_score_correlation = ifelse(
      valid_sample_count >= 2,  # 至少2个样本才能计算相关性
      cor(theta, score, method = "pearson"),  # 默认用Pearson相关
      NA_real_  # 样本量不足时返回NA
    )
  )

若需计算Spearman秩相关,只需将method = "pearson"改为method = "spearman"。

示例输出

运行后,cor_result会生成一个数据框,包含每个Rater的ID、有效评分数量,以及对应的theta与score相关系数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 15:01:01