Cronbach's α(クロンバックのアルファ)は
各質問項目(変数)が全体として同じ概念や対象を測定したかどうか(内的整合性)を評価する信頼係数です。
引用:統計WEB
リッカート法で収集したデータを分析する際にCronbach's αを計算することが多いです。
Cronbach's αを計算する関数
相関係数を用いてCronbach's αを計算することができます。
def cronbach_alpha(data):
df_corr = data.corr()
N = data.shape[1]
rs = np.array([])
for i, col in enumerate(df_corr.columns):
sum_ = df_corr[col][i+1:].values
rs = np.append(sum_, rs)
mean_r = np.mean(rs)
cronbach_alpha = (N * mean_r) / (1 + (N - 1) * mean_r)
return cronbach_alpha
複数の質問があるデータフレームをdataという引数に入れれば、計算完了です。
注意事項というか当たり前なのですが、逆転項目を反転して全て同じ方向に揃えることを忘れないようにお願いします。
計算式は以下の通りです。(n: 質問数(カラム数)、r: 相関係数)
a = \frac{n\bar{r}}{1+(n-1) \bar{r}}
Cronbach's αの解釈
経験的にはCronbach's αは以下のように解釈します。
Cronbach’s Alpha | Internal consistency |
---|---|
0.9 ≤ α | Excellent |
0.8 ≤ α < 0.9 | Good |
0.7 ≤ α < 0.8 | Acceptable |
0.6 ≤ α < 0.7 | Questionable |
0.5 ≤ α < 0.6 | Poor |
α < 0.5 | Unacceptable |
0.8あたりなら内的整合性があるのではないかという感じです。
例:Cronbach's αを求めてみる
質問が三つで一つの概念を測定しているサンプルデータを作成します。
df = pd.DataFrame({'Q1': [1, 2, 2, 3, 2, 2, 3, 3, 2, 3],
'Q2': [1, 1, 1, 2, 3, 3, 2, 3, 3, 3],
'Q3': [1, 1, 2, 1, 2, 3, 3, 3, 2, 3]})
df
Q1 | Q2 | Q3 |
---|---|---|
1 | 1 | 1 |
2 | 1 | 1 |
2 | 1 | 2 |
3 | 2 | 1 |
2 | 3 | 2 |
2 | 3 | 3 |
3 | 2 | 3 |
3 | 3 | 3 |
2 | 3 | 2 |
3 | 3 | 3 |
上で作成した関数を実行します。
np.round(cronbach_alpha(df), 3)
結果
0.774
最後に
Rでやれば心理学系のライブラリに標準で搭載されているかと思いますが、僕が以前調べた際にはPythonでの一般的なライブラリを見つけられなかったのでちょっと動くような関数を作ったという経緯があります。
これからもローカルにあるコードを極力共有していくように心がけていこうと思っています。
この記事は以下の情報を参考にして執筆しました。