読者です 読者をやめる 読者になる 読者になる

Knowledge As Practice

JAIST(東京)でサービス経営の研究をしている社会人大学院生の研究・勉強メモ(統計分析多め)。

Rによる級内相関係数(ICC)の2つの出し方

統計分析 ノンプログラマーのためのR入門

2~3ヶ月前から、マルチレベル分析*1を学んでいます。分析自体はできます(便利なことに、コード1行でできるので)。しかし、手持ちのデータでマルチレベル分析を使うべきなのかどうか、迷います。そんなときは級内相関係数(ICC)を確認するのが一般的なようです*2。例によって、ウェブ上で情報収集しました*3

 

使うデータ

あるサービスの500人分の満足度を1~7で集計したもの。性別(男性0、女性1)も記録している。

> cs <- read.delim("clipboard")
> head(cs)
  gender manzoku
1      0       5
2      0       6
3      0       4
4      0       5
5      0       4
6      1       6

 

ICCの出し方

1.lmerTest または lme4 パッケージのlmerを使う。
切片だけの変量効果を調べます。summary()を使って、Random effectsのVarianceを計算してICCを出します。すなわち、

gender の Variance ÷(gender の Variance+ Residual の Variance)

です。今回はとっても低い値になります。マルチレベル分析をする必要はなさそうです。

> library(lmerTest)
> icc_by_lmerTest <- lmer(manzoku ~ 1 + (1|gender), data = cs)
> summary(icc_by_lmerTest)
※前略
Random effects:
 Groups   Name        Variance  Std.Dev.
 gender   (Intercept) 2.497e-14 1.58e-07
 Residual             1.742e+00 1.32e+00
※後略

2.ICCパッケージのICCestを使う。
x がグループ、y が対象となるデータ、data がデータフレームです。x は因子型でないと怒られます。

> library(ICC)
> icc_by_ICCest <- ICCest(x = gender, y = manzoku, data = cs)
Warning message:
In ICCest(x = gender, y = manzoku, data = cs) :
  'x' has been coerced to a factor
> icc_by_ICCest <- ICCest(x = factor(gender), y = manzoku, data = cs)
> icc_by_ICCest
$ICC
[1] -0.002186884

 
なんだか、lmerTest を使った計算方法と結果が違います。でも、とても小さい値なので、やはりマルチレベル分析をする必要はなさそうです。なお、ICC の数値が違います。計算方法が違うので、どちらが正しいものかはわかりません…。今回はどちらも小さな値になったので、よかったものの、微妙な値だったらどうしようか…。

 
番外 psychパッケージのICCを使う。
psych パッケージの説明を読んだんですが、データの形式がちょっと違っていたので、面倒そうでやめました。

 

参考にしたページ

*1:一般線形混合モデル、階層線形モデル。

*2:『Rによる心理学研究法入門』の7章に書いてあるそうです。買っているけど、読んでなかった…。出張中ゆえ、手元にありません。

*3:なお、HADを使えばエクセルで簡単にできます。でも、今回はRを使ってICCを出すということで除きました。

クリエイティブ・コモンズ・ライセンス
この 作品 は クリエイティブ・コモンズ 表示 - 継承 4.0 国際 ライセンスの下に提供されています。