【统计方法】一致性分析:组内相关系数(ICC)的10种形式选择(SPSS操作指南与Python实现)

本文主要是介绍【统计方法】一致性分析:组内相关系数(ICC)的10种形式选择(SPSS操作指南与Python实现),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  可靠性(Reliability)被定义为测量结果可被复制的程度。它不仅反映了相关程度(correlation),还反映了测量之间的一致性(agreement)。实践中,Pearson相关系数、配对t检验和Bland-Altman图都可以用来评价Reliability。其中,配对t检验和Bland-Altman图是分析一致性的方法,Pearson相关系数则仅是对相关性的度量,因此,对Reliability来说,它们都不是理想的衡量方法。

  一个更优秀的可靠性度量指标,应该同时反映测量之间相关性和一致性的程度。组内相关系数(Interclass Correlation Coefficient, ICC)就是天选之子。

  参考论文:A Guideline of Selecting and Reporting Intraclass Correlation Coefficients for Reliability Research

1. ICC简介

  ICC是Fisher在1954年首次提出的,作为对Pearson相关系数的修正。而现在的ICC是通过方差分析得到的均方差(即,基于一组给定度量之间的可变性对总体方差的估计)来计算的。1979年,Shrout和Fleiss定义了6种形式的ICC,它们用括号中的2个数字表示:ICC(1,1)、ICC(1,k)、ICC(2,1)、ICC(2,1)、ICC(3,1)和ICC(3,k)。1997年,McGraw和Wong根据模型(model)、类型(type)和被认为重要的关系定义(definition)确定了10种形式的ICC。

【1】模型有三种:
  单向随机效应:1-way random effects
  双向随机效应:2-way random effects
  双向混合效应:2-way fixed effects

【2】类型有两种:
  单个评分者/测量值:single rater/ measurement
  k个评分者/测量值的平均值:the mean of k raters/measurements

【3】定义有两种:
  一致性:consistency
  绝对一致性:absolute agreement

  如何选择正确的ICC形式可通过4个问题来指导:
(1)是否对所有受试样本都采用同一组评分者?→ 模型
(2)评分者样本是从更大样本的群体中选取的还是特定的评分者样本?→ 模型
(3)感兴趣的是单一评分者还是多个评分者均值的可靠性?→ 类型
(4)关心的一致性还是绝对一致性?→ 定义

2. ICC形式选择

2.1 模型选择

(1)单向随机效应:1-way random effects
  这个模型中,每个受试样本都由一组不同的评分者打分,这些评分者是从大量可能的评分者中随机挑选出来的。实际上,该模型很少用于临床信度分析,因为大多数可靠性研究通常采用同一组评分者对所有受试样本进行测量。
  如下图所示,ABCDEF表示6名不同的评分者:
在这里插入图片描述  更常见的情况如下:
在这里插入图片描述
  在多中心研究中可能会有应用场景,比如一组评分者对一个中心的受试样本进行评估,而另一组评分者对另一个中心的受试样本进行评估。

(2)双向随机效应:2-way random effects
  这个模型中,我们从一个更大的具有相似特征的评分者群体中随机选择我们的评分者。换句话说,如果我们打算将我们的可靠性结果推广到与可靠性研究中所选的评分者具有相同特征的任何评分者,就应选择双向随机效应模型。简言之,可靠性结果可推广。

(3)双向混合效应:2-way fixed effects
  如果所选的评分者是唯一感兴趣的评分者,则应该使用双向混合效应模型。在此模型下,结果仅代表了参与可靠性实验的具体评分者的可靠性。它们不能推广到其他评分者,即使这些评价者与可靠性实验中所选的评价者具有相似的特征。简言之,可靠性结果不可推广。

2.2 类型选择

  这种选择取决于在实际应用中将如何执行测量方案。例如,如果我们计划使用3个评分者的平均值作为评估依据,则可靠性研究的实验设计应包括3个评分者,并选择类型:the mean of k raters/measurements。相反地,如果我们打算使用单一评分者的测量作为实际测量的依据,那么即使可靠性实验涉及到2个或2个以上的评分者,也应该选择类型:single rater/ measurement

2.3 定义选择

  对于双向随机效应模型和双向混合效应模型,有2个ICC定义:“绝对一致性”“一致性”。选择ICC定义取决于我们认为评分者之间的绝对一致性还是一致性更重要。
  设 y {y} y 为评分者A的分数, x {x} x 为评分者B的分数, c {c} c 为误差:
  一致性:同一组受试样本的评分是否以加性的方式相关,数学表达为 y = x + c {y=x+c} y=x+c
  绝对一致性:同一组受试样本的评分数值是否相近,数学表达为 y = x {y=x} y=x

论文中给定的10种ICC形式的计算表达式如下所示:
在这里插入图片描述
  但是我认为论文中ICC(1,1)的计算表达式分母的 k + 1 {k+1} k+1 应该为 k − 1 {k-1} k1 ,即:
在这里插入图片描述
  后面我将用代码证明 k − 1 {k-1} k1 才是正确的。

3. SPSS操作指南

SPSS可以方便的实现ICC计算:
1. 数据录入
在这里插入图片描述
2. 分析 → 标度→ 可靠性分析(Analyze → Scale → Reliability Analysis)
在这里插入图片描述
3. 设置选项
在这里插入图片描述
4. 模型选择:统计(Statistics)→ 同类相关系数(ICC),根据需要选择模型和类型
在这里插入图片描述
5. 结果解读
在这里插入图片描述
单个测量(Single Measures):对应single rater/ measurement
平均测量(Average Measures):对应the mean of k raters/measurements

ICC的值介于0~1之间:
  小于0.5表示一致性较差;
  0.5~0.75一致性中等;
  0.75~0.9一致性较好;
  大于0.9一致性极好;

4. Python实现

仔细观察计算表达式,发现双向混合与双向随机的表达式是一样的。
故用Python实现了6种ICC形式的计算:

import numpy as npdef icc_calculate(Y, icc_type):[n, k] = Y.shape# 自由度dfall = n * k - 1   # 所有自由度dfe = (n - 1) * (k - 1)   # 剩余自由度dfc = k - 1    # 列自由度dfr = n - 1    # 行自由度# 所有的误差mean_Y = np.mean(Y)SST = ((Y - mean_Y) ** 2).sum()x = np.kron(np.eye(k), np.ones((n, 1)))  # sessionsx0 = np.tile(np.eye(n), (k, 1))  # subjectsX = np.hstack([x, x0])# 误差均方predicted_Y = np.dot(np.dot(np.dot(X, np.linalg.pinv(np.dot(X.T, X))), X.T), Y.flatten("F"))residuals = Y.flatten("F") - predicted_YSSE = (residuals ** 2).sum()MSE = SSE / dfe# 列均方SSC = ((np.mean(Y, 0) - mean_Y) ** 2).sum() * nMSC = SSC / dfc# 行均方SSR = ((np.mean(Y, 1) - mean_Y) ** 2).sum() * kMSR = SSR / dfrif icc_type == "icc(1)":SSW = SST - SSR   # 剩余均方MSW = SSW / (dfall - dfr)ICC1 = (MSR - MSW) / (MSR + (k - 1) * MSW)ICC2 = (MSR - MSW) / MSRelif icc_type == "icc(2)":ICC1 = (MSR - MSE) / (MSR + (k - 1) * MSE + k * (MSC - MSE) / n)ICC2 = (MSR - MSE) / (MSR +  (MSC - MSE) / n)elif icc_type == "icc(3)":ICC1 = (MSR - MSE) / (MSR + (k - 1) * MSE)ICC2 = (MSR - MSE) / MSRreturn ICC1, ICC2

测试icc(1):

a = [[90,95,89,92,89,80,91,94,84,95],[89,80,89,93,91,80,94,92,82,90],[100,100,91,91,94,81,93,92,84,96]]
b = np.array(a)
b = b.T
icc_type = "icc(1)"
icc1, icc2 = icc_calculate(b, icc_type)
print('模型{}:\t'.format(icc_type))
print('单个测量:', icc1)
print('平均测量:', icc2)

输出:对应SPSS选择单项随机,代码与SPSS结果一致, k − 1 {k-1} k1 才是正确的

模型icc(1):	
单个测量: 0.4642314139799629
平均测量: 0.7221784219782894

在这里插入图片描述

测试icc(2):

a = [[90,95,89,92,89,80,91,94,84,95],[89,80,89,93,91,80,94,92,82,90],[100,100,91,91,94,81,93,92,84,96]]
b = np.array(a)
b = b.T
icc_type = "icc(2)"
icc1, icc2 = icc_calculate(b, icc_type)
print('模型{}:\t'.format(icc_type))
print('单个测量:', icc1)
print('平均测量:', icc2)

输出:对应SPSS选择 双向随机,绝对一致,代码与SPSS结果一致

模型icc(2):	
单个测量: 0.4807888473308402
平均测量: 0.7353094123764954

在这里插入图片描述
测试icc(3):

a = [[90,95,89,92,89,80,91,94,84,95],[89,80,89,93,91,80,94,92,82,90],[100,100,91,91,94,81,93,92,84,96]]
b = np.array(a)
b = b.T
icc_type = "icc(3)"
icc1, icc2 = icc_calculate(b, icc_type)
print('模型{}:\t'.format(icc_type))
print('单个测量:', icc1)
print('平均测量:', icc2)

输出:对应SPSS选择 双向混合,一致性,代码与SPSS结果一致

模型icc(3):	
单个测量: 0.529918800749532
平均测量: 0.7717872521074659

在这里插入图片描述

这篇关于【统计方法】一致性分析:组内相关系数(ICC)的10种形式选择(SPSS操作指南与Python实现)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/272591

相关文章

如何选择适合孤独症兄妹的学校?

在探索适合孤独症儿童教育的道路上,每一位家长都面临着前所未有的挑战与抉择。当这份责任落在拥有孤独症兄妹的家庭肩上时,选择一所能够同时满足两个孩子特殊需求的学校,更显得尤为关键。本文将探讨如何为这样的家庭做出明智的选择,并介绍星贝育园自闭症儿童寄宿制学校作为一个值得考虑的选项。 理解孤独症儿童的独特性 孤独症,这一复杂的神经发育障碍,影响着儿童的社交互动、沟通能力以及行为模式。对于拥有孤独症兄

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

hdu1496(用hash思想统计数目)

作为一个刚学hash的孩子,感觉这道题目很不错,灵活的运用的数组的下标。 解题步骤:如果用常规方法解,那么时间复杂度为O(n^4),肯定会超时,然后参考了网上的解题方法,将等式分成两个部分,a*x1^2+b*x2^2和c*x3^2+d*x4^2, 各自作为数组的下标,如果两部分相加为0,则满足等式; 代码如下: #include<iostream>#include<algorithm

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo