注:本文没有理论只有实际操作方法(R,Mplus,SPSS,EXCEL, HLM)。主要是组内相关系数(intraclass correlation coefficient ;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)
#得到结果:
根据公式
ICC(1)=组间方差/(组间方差+组内方差)计算ICC(1)ICC(1)=组间方差/(组间方差+组内方差)
再根据
ICC2= k*ICC1 / (1 + (k-1)*ICC1)求得ICC2,k是每组的平均样本量。
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;
!输出结果:
Intraclass correlation就是要求的ICC1了,然后average cluster seize就是k(平均每组的样本大小),带入公式
ICC2= k*ICC1 / (1 + (k-1)*ICC1)求得ICC2。 注:结果会得到如下
warnings说你输入的变量和其它所有别的变量都无关,
可以直接无视,因为你只输入了一个变量MACH,不存在和它有关的别的变量。
SPSS(点点鼠标就好了。)
1.用ANOVA模型求均方,代公式
- Analyze > Compare Means > One-Way ANOVA
- 选择Factor(组Group),Dependent List(分数Score)>OK
3.得到结果:
根据公式算ICC1和ICC2。
注意:这里ICC1代入得公式是:
ICC2代入公式是:
- 继续用ICC2= k*ICC1 / (1 + (k-1)*ICC1)也可以
2.用混合线性模型求方差(linear mixed-effects model, LME),代公式(
*针对多层模型是否要聚合aggregate/数据是否具有高度组内相关性interclass correlation/个体分组内聚集clustered by group
- 分析Analyze >混合模型 Mixed Models > 线性混合模型Linear
- (选择被试/重复变量/)直接点继续
- 选择因变量(Dependent variable)(+自变量(factor))
- 面板上Random> 自定义模型>继续continue
- 面板Statistics > Model Statistics > 勾选parameter estimates>继续continue
- 面板点OK
根据公式:
组间方差/(组间方差+组内方差)
ICC1 = 结果中(intercept estimate)/(intercept estimate + residual estimate)
3. 直接计算6类ICC。
确定了要计算的ICC模型类型后:- “分析”(Analyze)>“度量”(Scale)>“可靠性分析”(Reliability Analysis)
- 选择好想要分析的项目后,点击“统计量”(Statistics)
- 勾选”同类相关系数“(Intraclass correlation coefficient)
- 选择你要计算的ICC模型和类型
- 按下”继续“ (Continue)
- 按下”确定“(OK),得到”结果“(output)。
3.用syntax(LeBreton, & Senter, 2008).:
例1:导入原始数据如下图:
原始数据:LeBreton, J. M., &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.
- File >New > Syntax
#重整数据
SORT CASES BY Target.
CASESTOVARS
/ID = Target
/GROUPBY = VARIABLE.
EXECUTE.
重整后数据
#设置缺失数据
RECODE ITEM1.1 to ITEM2.5 (MISSING = 999).
MISSING VALUES ITEM1.1 to ITEM2.5 (999).
EXECUTE.
处理缺失数据后的数据
#计算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.
完成以上所有步骤后,新增了变量
例2.
原始数据如下
#先估计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