天天看点

相关系数excel_如何求组内相关系数ICC?(应用篇)

注:本文没有理论只有实际操作方法(R,Mplus,SPSS,EXCEL, HLM)。主要是组内相关系数(intraclass correlation coefficient ;ICC)算法,顺带捎了点求

相关系数excel_如何求组内相关系数ICC?(应用篇)

的方法。

尽管检验信度和非独立性的ICC概念上不同,但计算的时候是一回事儿。请在算ICC前,理理清楚自己要算啥、怎么算、有啥意义。【

可以去看

理论篇(1)

理论篇(2)】

R

1.(多层模型分析中最常用)lme4包 ——VarCorr()和lmer()功能/ nlme包 ——lme()功能

#先建模(random coefficient models, e.g. HLM)

fm1 <- lmer(Y~ XX+ (XX|Group1), data = data, na.action=na.omit)
           

#也可以写作

fm1 <- lme(Y~ XX, random = ~ 1|Group1, data = data, na.action=na.omit)
           

# 提取方差和标准差

VarCorr(fm1)
           

#得到结果:

相关系数excel_如何求组内相关系数ICC?(应用篇)

根据公式

ICC(1)=组间方差/(组间方差+组内方差)计算ICC(1)
相关系数excel_如何求组内相关系数ICC?(应用篇)

ICC(1)=组间方差/(组间方差+组内方差)

再根据

ICC2= k*ICC1 / (1 + (k-1)*ICC1)

求得ICC2,k是每组的平均样本量。

相关系数excel_如何求组内相关系数ICC?(应用篇)

ICC2= k*ICC1 / (1 + (k-1)*ICC1)

2. psych包——ICC()功能

#例子1(此为 Shrout & Fleiss (1979)文中的例子)

sf <- matrix(c( 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) colnames(sf) <- paste("J",1:4,sep="") rownames(sf) <- paste("S",1:6,sep="") 
#仅基于方差分析 ICC(sf,lmer=FALSE)  
           

#例子2

#载入数据

sai <- psychTools::sai 
           

#选择要分析的部分数据

sai.xray <- subset(sai,(sai$study=="XRAY") & (sai$time==1)) 
           

#计算ICC(lmer=True的情况下允许有缺失数据并会生成方差成分(variance components),相当于使用了lme4包种的lmer功能)

xray.icc <- ICC(sai.xray[-c(1:3)],lmer=TRUE,check.keys=TRUE) 
xray.icc 
           

#查看方差组成部分

xray.icc$lme
           

3.ref="https://www.rdocumentation.org/packages/irr/versions/0.84.1/topics/icc">irr 包——icc()功能

icc(data, model = c("oneway", "twoway"),   type = c("consistency", "agreement"),      unit = c("single", "average"), r0 = 0, conf.level = 0.95)
           

data就是数据集(dataframe),载入前要预先处理好行列信息(仅保留要测的变量)。

model(默认单因子)、type(默认C)、unit(默认单个评分者)的选择上面讲过了。

r0(明确零假设(H0:r=r0),执行了单侧检验(H1: r > r0)和conf.level可以不用打出来,按默认设置处理。

方法2、3的数据种,列(column)数默认是评分/评委人数(number of judges),行(line)数默认是被试人数;输出结果都是6项ICC指数,即ICC1-3、ICC1k-3k。

4. 专门的ICC包(笔者没用过,请自行琢磨)

Mplus(例子引自Michael Zyphur的5日workshop)

完整资料链接如下:

Mplus Workshop at The University of Melbourne, February 4-8, 2019 (5 Days).​melbourne.figshare.com

或者:dropbox链接(不含视频):https://tinyurl.com/y2ooc4nw 或者:B站教学视频链接:https://www.bilibili.com/video/BV1MV411f7yt 或者:海外党油管链接:https://www.youtube.com/watch?v=ekpMPTYn8uQ&list=PL8aoPJZQes3qZbWeho7WFNjgpRtLU3KHs&index=13

先建一个空的双层模型,求ICC1,然后自己手动求一下ICC2,

代码如下:

Title: Random Intercept
Data: File is High School and Beyond.dat;  
           

! 1982年,7185名来自160所高中及以上学校的问卷数据

Variable: 
Names are   school student minority 
female ses MAch size pracad disclim;
           
  • ! school 是学校编号,分类变量(clustering variable)
  • ! student 是学生编号
  • !minority代表是否是少数族裔,1=黑人,0=其他
  • ! female代表性别,1 = 女, 0 = 男
  • ! ses 是社会经济地位
  • !MAch 是数学成绩
  • !size 学校规模(组间变量)
  • ! sector 部门, 1 = 私立天主教学校, 0 = 公立学校 (组间变量)
  • ! pracad ! 学生占比(组间变量)
  • !disclim; ! 纪律风气(disciplinary climate), 分数越低越好(组间变量)
Usevariables = MAch;   
Cluster = School;    

Analysis:   
Type = twolevel;   
Estimator = ML; 
           

! 也可以使用贝叶斯模型Bayes

Model:   
%Between%   MAch;    
%Within%   MAch;    
Output: Tech1 Tech8 standardized sampstat;
           

!输出结果:

相关系数excel_如何求组内相关系数ICC?(应用篇)

Intraclass correlation就是要求的ICC1了,然后average cluster seize就是k(平均每组的样本大小),带入公式

ICC2= k*ICC1 / (1 + (k-1)*ICC1)

求得ICC2。 注:结果会得到如下

warnings

说你输入的变量和其它所有别的变量都无关,

可以直接无视

,因为你只输入了一个变量MACH,不存在和它有关的别的变量。

相关系数excel_如何求组内相关系数ICC?(应用篇)

SPSS(点点鼠标就好了。)

1.用ANOVA模型求均方,代公式

  1. Analyze > Compare Means > One-Way ANOVA
  2. 选择Factor(组Group),Dependent List(分数Score)>OK
相关系数excel_如何求组内相关系数ICC?(应用篇)

3.得到结果:

相关系数excel_如何求组内相关系数ICC?(应用篇)

根据公式算ICC1和ICC2。

注意:这里ICC1代入得公式是:

相关系数excel_如何求组内相关系数ICC?(应用篇)

ICC2代入公式是:

相关系数excel_如何求组内相关系数ICC?(应用篇)
  • 继续用ICC2= k*ICC1 / (1 + (k-1)*ICC1)也可以

2.用混合线性模型求方差(linear mixed-effects model, LME),代公式(

*针对多层模型是否要聚合aggregate/数据是否具有高度组内相关性interclass correlation/个体分组内聚集clustered by group

  1. 分析Analyze >混合模型 Mixed Models > 线性混合模型Linear
  2. (选择被试/重复变量/)直接点继续
  3. 选择因变量(Dependent variable)(+自变量(factor))
  4. 面板上Random> 自定义模型>继续continue
  5. 面板Statistics > Model Statistics > 勾选parameter estimates>继续continue
  6. 面板点OK

根据公式:

相关系数excel_如何求组内相关系数ICC?(应用篇)

组间方差/(组间方差+组内方差)

ICC1 = 结果中(intercept estimate)/(intercept estimate + residual estimate)

3. 直接计算6类ICC。

确定了要计算的ICC模型类型后:
  1. “分析”(Analyze)>“度量”(Scale)>“可靠性分析”(Reliability Analysis)
  2. 选择好想要分析的项目后,点击“统计量”(Statistics)
  3. 勾选”同类相关系数“(Intraclass correlation coefficient)
  4. 选择你要计算的ICC模型和类型
  5. 按下”继续“ (Continue)
  6. 按下”确定“(OK),得到”结果“(output)。

3.用syntax(LeBreton, & Senter, 2008).:

例1:

导入原始数据如下图:

相关系数excel_如何求组内相关系数ICC?(应用篇)

原始数据:LeBreton, J. M., &amp;amp;amp;amp;amp;amp;amp;amp; Senter, J. L. (2008). Answers to 20 questions about interrater reliability and interrater agreement.Organizational research methods,11(4), 815-852.

  1. File >New > Syntax

#重整数据

SORT CASES BY Target. 
CASESTOVARS 
/ID = Target 
/GROUPBY = VARIABLE. 
EXECUTE. 
           
相关系数excel_如何求组内相关系数ICC?(应用篇)

重整后数据

#设置缺失数据

RECODE ITEM1.1 to ITEM2.5 (MISSING = 999). 
MISSING VALUES ITEM1.1 to ITEM2.5 (999). 
EXECUTE.
           
相关系数excel_如何求组内相关系数ICC?(应用篇)

处理缺失数据后的数据

#计算rwg

COMPUTE obs_var1 = var(item1.1,item1.2,item1.3,item1.4,item1.5). 
EXECUTE.
COMPUTE rwg1_un = 1-(obs_var1/2). 
COMPUTE rwg1_ss = 1-(obs_var1/1.34). 
EXECUTE.
           

#求ADM

COMPUTE MEAN1 = mean(item1.1,item1.2,item1.3,item1.4,item1.5). 
COMPUTE AD1 = mean(abs(item1.1-mean1),abs(item1.2-mean1),abs(item1.3-mean1), 
abs(item1.4-mean1), abs(item1.5-mean1)). 
EXECUTE.
           

#求ICC(1)ICC(k)

RELIABILITY 
/VARIABLES = Item1.1 Item1.2 Item1.3 Item1.4 Item1.5 
/SCALE(ALPHA) = ALL/MODEL = ALPHA 
/ICC = MODEL(ONEWAY) CIN = 95 TESTVAL = 0. 
EXECUTE.
           

#rwg(j)

COMPUTE obs_var2 = var(item2.1,item2.2,item2.3,item2.4,item2.5). 
COMPUTE avg_var = mean(obs_var1,obs_var2). 
EXECUTE.
COMPUTE rwgj_un = (2∗(1-avg_var/2))/((2∗(1-avg_var/2)) + avg_var/2). 
COMPUTE rwgj_ss = (2∗(1-avg_var/1.34))/((2∗(1-avg_var/1.34)) + avg_var/1.34). 
EXECUTE.
           

#求ADM(j)

COMPUTE MEAN2 = mean(item2.1,item2.2,item2.3,item2.4,item2.5). 
COMPUTE AD2 = mean(abs(item2.1-mean2),abs(item2.2-mean2),abs(item2.3-mean2), 
abs(item2.4-mean2), abs(item2.5-mean2)). 
COMPUTE ADJ = mean(AD1,AD2). 
EXECUTE.
           
相关系数excel_如何求组内相关系数ICC?(应用篇)

完成以上所有步骤后,新增了变量

例2.

原始数据如下

相关系数excel_如何求组内相关系数ICC?(应用篇)
#求rWGp

#先估计rwg

SORT CASES BY Leader. 
SPLIT FILE 
SEPARATE BY Leader. 
DESCRIPTIVES 
VARIABLES = Item1 
/STATISTICS = MEAN STDDEV VARIANCE MIN MAX.
           

#接着求

rWGp

(a single, global estimate of (pooled) within-groups agreement).

SORT CASES BY Leader. 
SPLIT FILE 
SEPARATE BY Leader. 
UNIANOVA 
item1 BY status  
/METHOD = SSTYPE(3) 
/INTERCEPT = INCLUDE 
/EMMEANS = TABLES(status) 
/PRINT = HOMOGENEITY 
/CRITERIA = ALPHA(.05) 
/DESIGN = status.
           

#item 2

SORT CASES BY Leader. 
SPLIT FILE 
SEPARATE BY Leader. 
UNIANOVA 
item2 BY status 
/METHOD = SSTYPE(3) 
/INTERCEPT = INCLUDE 
/EMMEANS = TABLES(status) 
/PRINT = HOMOGENEITY 
/CRITERIA = ALPHA(.05) 
/DESIGN = status.
           

#item3

SORT CASES BY Leader. 
SPLIT FILE 
SEPARATE BY Leader. 
UNIANOVA 
item3 BY status 
/METHOD = SSTYPE(3) 
/INTERCEPT = INCLUDE 
/EMMEANS = TABLES(status) 
/PRINT = HOMOGENEITY 
/CRITERIA = ALPHA(.05) 
/DESIGN = status.
           

完成以上步骤后,得到 3个平均均方误差估计(average mean square error estimates)/

rWGp值:

.611, .333, .333。

#接着求rWGp(j)

根据公式求得3个rWGp(j):.87, .94, .94。

EXCEL

Michael S. Cole的网站可以下载Biemann, Cole, & Voelpel (2012)开发的基于EXCEL计算ICC的工具。但是似乎需要付费的宏包才能运行?

****Available for download: Excel tool for computing within-group agreement and interrater reliablity. Developed to accompany Biemann, Cole, & Voelpel (2012).

HLM(笔者没用过,但还是找了些资源,感兴趣的小伙伴可以自行查看):

下载https://www.ssicentral.com/index.php/product/hlm

HLM8用户手册:https://www.hearne.software/getattachment/a104646a-d78e-4ccd-88cf-cf04a78b47f2/HLM8-Manual.aspx

HLM7指南里有详细步骤图:https://multilevel-analysis.sites.uu.nl/wp-content/uploads/sites/27/2018/06/HLM-manual-Final.pdf