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

$ICC(1,1):$は、一人の評価者が測定した値の信頼性や一貫性を評価します
$ICC(1,k):$は、一人の評価者が測定した値の平均値の信頼性や一貫性を評価します

$ICC(2, 1)$では、数名の評価者が測定した値の信頼性や一貫性を評価します
$ICC(2, k)$では、数名の評価者が測定した平均値の信頼性や一貫性を評価します

$ICC(3, 1)$では、評価者を固定した場合の測定値の信頼性や一貫性を評価します(評価者間のばらつきは考慮されません)
$ICC(3, k)$では、評価者を固定した場合の測定値
平均値の信頼性や一貫性を評価します(評価者間のばらつきは考慮されません)

下記の文献のICC(1, 1)、ICC(1, k)をRでやってみます.

Shrout PE, Fleiss JL. Intraclass correlations: uses in assessing rater reliability. Psychol Bull. 1979 Mar;86(2):420-8. doi: 10.1037//0033-2909.86.2.420.

サンプルはここからです、いつもお世話になっております

統計学入門−第5章

データの準備と要約

以下のファイルを読み込んでください(ファイルの読み込み方

R
dat <- read.csv("ICC01.csv", header=T, fileEncoding = "UTF-8")
head(dat)

評価者 1名、被験者患 10名、測定回数 3 回

> head(dat)
  ID test1 test2 test3   mean
1  1    15    10    21 15.333
2  2    30    14    38 27.333
3  3    34    42    36 37.333
4  4    52    38    40 43.333
5  5    58    51    42 50.333
6  6    69    78    63 70.000

ICC(1,1)、ICC(1,k)はともに同じファイルを使用します

ICC(1, 1)とICC(1, k)の答えです

ICC(1,1)≒0.942、95%信頼区間:0.848  0.984
ICC(1,3)≒0.980、95%信頼区間:0.943  0.995

Rを使いながら、この解がどのようにして導かれたのかを解説します

使用するパッケージ
R
library(irr)
library(tidyr)
library(ggplot2)
縦のデータに変換
R
dat2 <- tidyr::gather(
    dat[,-5],
    key=PT,
    value=data,
    -ID)
head(dat2)
> head(dat2)
  ID    PT data
1  1 test1   15
2  2 test1   30
3  3 test1   34
4  4 test1   52
5  5 test1   58
6  6 test1   69

変数をfactorへ変換(ここを忘れたらグラフが変わります)

R
dat2$PT <- as.factor(dat2$PT)
levels(dat2$PT)
dat2$ID <- as.factor(dat2$ID)
levels(dat2$ID)
> dat2$PT <- as.factor(dat2$PT)
> levels(dat2$PT)
[1] "test1" "test2" "test3"
> dat2$ID <- as.factor(dat2$ID)
> levels(dat2$ID)
 [1] "1"  "2"  "3"  "4"  "5"  "6"  "7"  "8"  "9"  "10"
基準カテゴリー

factor() 関数は名義変数をカテゴリカル変数(因子型変数)に変換し、データのカテゴリーは「水準」として定義されます。levels() 関数で表示されるカテゴリカル変数の水準のうち、最初に表示されるカテゴリーがデフォルトで基準カテゴリー(参照カテゴリー)となり、統計モデルでの比較の基点として機能します。relevel() 関数や factor() 関数の levels 引数を使用することで、レベルの順序を指定し、基準カテゴリーを変更することが可能です。

ICC(1, 1) 3回の計測結果が対象

1人の評価者が患者 ($n=10$) に対して検査を数回 ($k=3$)実施した時の信頼性を求めます。検査結果($test1, test2, test3$)の誤差が小さいと信頼性が高いと判断します。

グラフでデータ構造をイメージ
R
g1 <- ggplot2::ggplot(
    dat2,
    aes(x = PT, y = data)
)

g2 <- g1 + geom_jitter(
    height=0, width =0.1, size = 3,
    aes(colour = ID)
) 

g2 + theme_test() + xlab("") +ylab("結果")

このように、IDをブロック因子とした二元配置分散分析(繰り返し測定なし)のグラフを描かれるかもしれません・・・。対応のある一元配置分散分析とも呼ばれています。でもIDを要因として考えて、以下ようなグラフをイメージしておくと理解しやすくなります。

R
#グラフの描き方
g1 <- ggplot2::ggplot(
    dat2,
    aes(x = ID, y = data)
)

g2 <- g1 + geom_jitter(
    height=0, width =0.1, size = 3,
    aes(colour = PT)
) 

m <- mean(dat2$data)

g2 + theme_test() + 
    xlab("ID") + ylab("結果") +
    geom_hline(aes(yintercept = m),
    color = "red"
)

Rの関数でICCを求める

パッケージirrのicc関数には下記のような引数が用意されています

3回計測(oneway)の一貫性(consistency)をそれぞれのデータ(single)から評価します

R
irr::icc(
    dat[,2:4],
    model="oneway",
    type="consistency",
    unit="single"
)

注意)横データを使っています

 Single Score Intraclass Correlation

   Model: oneway 
   Type : consistency 

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

 F-Test, H0: r0 = 0 ; H1: r0 > 0 
    F(9,20) = 50.2 , p = 9.01e-12 

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

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

ここからは、もう少し詳しく勉強しましょう

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

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