计算同类相关系数(ICC)R

计算同类相关系数(ICC)R语言

需要的包:readr,irr

library(readr)
library(irr)


fpath <- choose.files()

feature_1 <- read_csv(fpath)

fpath <- choose.files()

feature_3 <- read_csv(fpath)
len <- N# N是指标的数量
icc_val<-vector(length=Len)
thr <- 0.75
selected <- feature_1[feature_1$ID %in% feature_3$ID,]#获取id相同的样本
for (i in 2:len){#len是特征的数量,第一列是ID,从第二列开始进行指标的比较
  ratings <- cbind(selected[,i],feature_3[,i])
  icc <- icc(ratings, model = "twoway", 
             type = "agreement", 
             unit = "single", r0 = 0, conf.level = 0.95)
  icc_val[i] <- icc$value
}
Index <- which(icc_val > thr)
dim(icc_val)=c(1,len)
write.csv( icc_val,file = "output.csv",row.names = F)

icc处的参数:type:agreement 是不同评分者的评价是否一致 consistency不同评分者的评分是否存在相关性

                      unit:single 是单个评分 average是取平均的评分

  • 2
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
组内相关系数ICC是衡量和评价观察者间信度和复测信度的信度系数指标之一。在Python中,有多种方法可以实现ICC计算,包括使用rpy2包、pingouin库和psych包等。其中,rpy2包可以从Python中使用R语言的函数,pingouin库提供了6种不同的ICC计算方法,而psych包则可以计算多种类型的ICC变体。以下是使用这三种方法计算ICC的示例代码: 使用rpy2包: ```python from rpy2.robjects import DataFrame, FloatVector, IntVector from rpy2.robjects.packages import importr from math import isclose # 安装并导入psych包和lme4包 psych = importr("psych") lme4 = importr("lme4") # 准备数据 values = [[9, 2, 5, 8], [6, 1, 3, 2], [8, 4, 6, 8], [7, 1, 2, 6], [10, 5, 6, 9], [6, 2, 4, 7]] df = DataFrame({'values': FloatVector([item for sublist in values for item in sublist]), 'rater': IntVector([i+1 for i in range(len(values))]*4), 'target': IntVector([j+1 for j in range(4)]*len(values))}) # 计算ICC icc = psych.ICC(df, "twoway", "agreement", 2) print("ICC值为:", icc[0][0]) ``` 使用pingouin库: ```python import pingouin as pg # 准备数据 data = pg.read_dataset('icc') # 计算ICC icc = pg.intraclass_corr(data=data, targets='Wine', raters='Judge', ratings='Scores', nan_policy='omit') print("ICC值为:", icc['ICC'][0]) ``` 使用psych包: ```python import rpy2 from rpy2.robjects import IntVector, pandas2ri from rpy2.robjects.packages import importr # 安装并导入psych包 psych = importr("psych") # 准备数据 values = rpy2.robjects.r.matrix(IntVector([9, 2, 5, 8, 6, 1, 3, 2, 8, 4, 6, 8, 7, 1, 2, 6, 10, 5, 6, 9, 6, 2, 4, 7]), ncol=4, byrow=True) # 计算ICC icc = psych.ICC(values) # 转换为Pandas DataFrame icc_df = pandas2ri.rpy2py(icc[0]) print("ICC值为:", icc_df['value'][0]) ```
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值