級内相関係数, Case2, ICC(2, 1), ICC(2, k)

Rの関数でICC(2,1)をやってみましょう

Rの関数を使用してICC(2,1)を算出

R
irr::icc(
    dat[,2:4],
    model="twoway",
    type="agreement",
    unit="single"
)
 Single Score Intraclass Correlation

   Model: twoway 
   Type : agreement 

   Subjects = 10 
     Raters = 3 
   ICC(A,1) = 0.942

 F-Test, H0: r0 = 0 ; H1: r0 > 0 
  F(9,18.7) = 46.1 , p = 7.12e-11 

 95%-Confidence Interval for ICC Population Values:
  0.844 < ICC < 0.984

結果のみでよければ、ここまでです

ここからは、もう少し詳しく学習してみましょう

統計モデル

モデルは繰り返し測定のない二元配置分散分析です。Shrout(1979)の論文では、以下のようになっています(ただし記号は異なります)。

yij=μ+αi+βj+(αβ)ij+wij

i=1,,nj=1,,k

このモデルを簡単に説明すると、「検査結果=全体の平均+患者の影響+評価者の影響+ 患者と評価者の組み合わせで生じる影響+誤差による影響」となります。しかし繰り返し測定がないので、(αβ)ijwij を個別に推定することは困難です(Shrout, 1979, p422)。ここでは以下のモデルで考えます(ICCの結果には問題ありません)。

yij=μ+αi+βj+eij

αiN(0,σT2)βjN(0,σU2)eijN(0,σE2)

  • σT2:真の分散(真の検査結果のバラツキ)
  • σU2:評価者による分散(測定誤差)
  • σE2:誤差による分散

ICC(2,1)=σT2σT2+σU2+σE2

The Expected Mean Squares(平均平方の期待値)

評価者数、患者数

患者平均平方和 (between-targets mean square) の期待値

BMS=kσT2+σE2

評価者平均平方和 (between-judges mean square) の期待値

JMS=nσU2+σE2

誤差平均平方和 (Mean Square Error) の期待値

MSE=σE2

ICC(2,1)=BMSMSEBMS+(k1)MSE+k(JMSMSE)n

(期待値の求め方は以下のページをご参照ください)

分散分析表

R
fit <- lm(data ~ ID + PT, data=dat2)
anova(fit)
> anova(fit)
Analysis of Variance Table

Response: data
          Df  Sum Sq Mean Sq F value   Pr(>F)    
ID         9 22162.7 2462.52  46.051 1.33e-10 ***
PT         2    19.5    9.73   0.182   0.8351    
Residuals 18   962.5   53.47      

分散分析表から平均平方和のみを取り出してICCを求めてみます

R
BMS <- anova(fit)[1, 3]
JMS <- anova(fit)[2, 3]
MSE <- anova(fit)[3, 3]
(ICC2 <- (BMS - MSE)/(BMS + (3-1)*MSE + 3*(JMS-MSE)/10))
> (ICC2 <- (BMS - MSE)/(BMS + (3-1)*MSE + 3*(JMS-MSE)/10))
[1] 0.9423787

Rの関数iccで算出した解と同じですね

ICC(2,1) の95%信頼区間

ICC(2,1)=BMSMSEBMS+(k1)MSE+k(JMSMSE)n

=n(BMSMSE)nBMS+(knkn)MSE+kJMS

ここからは、かなり難解ですので・・・

Shrout(1979)の論文から引用させていただきます

ICC=ICC(2,1)

Fj=JMSMSE

v=(k1)(n1)(kICCFj+n(1+(k1)ICC)kICC)2(n1)k2ICC2Fj2+(n(1+(k1)ICC)kICC)2

ICC(2,1)の95%信頼区間は以下のようになるそうです

Fu=F0.975(n1,v)

Fl=F0.975(v,n1)

下限:Lo=n(BMSFMSE)F(kJMS+(knkn)EMS)+nBMS)

上限:Up=n(FBMSMSE)kJMS+(knkn)EMS+nFBMS

そのまま計算してみます(正確には「Rに計算してもらいます」です)

R
k <- 3
n <- 10
ICC <- ICC2
f <- JMS/MSE
v1 <- ((k-1)*(n-1))*(k*ICC*f+n*(1+(k-1)*ICC)-k*ICC)^2
v2 <- (n-1)*k^2*ICC^2*f^2+(n*(1+(k-1)*ICC)-k*ICC)^2
v <- v1/v2
F1 <- qf(0.975, 9, v)
F2 <- qf(0.975, v, 9)
(Lo <- n*(BMS-F1*MSE)/(F1*(k*JMS+(k*n-k-n)*MSE)+n*BMS))
(Up <- n*(F2*BMS-MSE)/(k*JMS+(k*n-k-n)*MSE+n*F2*BMS))
> (Lo <- n*(BMS-F1*MSE)/(F1*(k*JMS+(k*n-k-n)*MSE)+n*BMS))
[1] 0.8439671
> (Up <- n*(F2*BMS-MSE)/(k*JMS+(k*n-k-n)*MSE+n*F2*BMS))
[1] 0.9839527

Rの関数で算出した値と同じですね

詳細は下記の論文をご参照ください
SATTERTHWAITE, Franklin E. An approximate distribution of estimates of variance components. Biometrics bulletin, 1946, 2.6: 110-114.
FLEISS, Joseph L.; SHROUT, Patrick E. Approximate interval estimation for a certain intraclass correlation coefficient. Psychometrika, 1978, 43: 259-262.

コメント欄 『間違い』や『分かりにくい部分』などのご意見もお寄せください

タイトルとURLをコピーしました