注:本文沒有理論隻有實際操作方法(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