井出草平の研究ノート

順序α (Ordinal Alpha)[R]

クロンバッハのαの順序尺度版。

digitalcommons.wayne.edu

リッカート尺度で構成された尺度の内的一貫性・内的整合性(internal consistency)を求める際に使う価値がある方法である。

パッケージを用いた計算

ufsというパッケージ。もともとはuserfriendlyscienceというパッケージ名だった。名前がふざけているわけではなく、作者が欲しいと思った関数を集めたパッケージなので、マッチしたネーミングである。

rdrr.io

library(ufs)
data(testRetestSimData)
exampleData <- testRetestSimData[2:6]
head(exampleData)

データ。

  t0_item1 t0_item2 t0_item3 t0_item4 t0_item5
1 29.93730 50.23123 30.61498 49.01391 23.01165
2 39.76955 67.81076 35.74118 44.76242 50.05253
3 33.48308 42.22236 27.62342 36.27752 39.74102
4 30.27362 51.64451 25.69399 37.17631 28.56495
5 31.30345 33.73300 27.53687 30.49654 17.04260
6 33.09629 56.51762 25.25943 40.53681 32.53490
scaleStructure(dat=exampleData, items=c('t0_item2', 't0_item3', 't0_item4'),
               ci=FALSE)
Estimates assuming interval level:

             Omega (total): 0.75
      Omega (hierarchical): 0.08
   Revelle's omega (total): 0.75
Greatest Lower Bound (GLB): 0.76
             Coefficient H: 0.77
         Coefficient alpha: 0.68

リーカット尺度に変更

今まで使っていたデータを再利用。連続変数をリッカート尺度的に順序尺度に変更する。

ordinalExampleData <- data.frame(apply(exampleData, 2, cut,
                                       breaks=5, ordered_result=TRUE,
                                       labels=as.character(1:5)))
head(ordinalExampleData)

データ。

  t0_item1 t0_item2 t0_item3 t0_item4 t0_item5
1        1        3        3        4        2
2        4        4        4        3        4
3        2        2        2        2        3
4        1        3        2        2        2
5        2        1        2        1        1
6        2        3        1        3        2

数値型への変更

ordinalExampleData$t0_item1 <- as.numeric(ordinalExampleData$t0_item1)
ordinalExampleData$t0_item2 <- as.numeric(ordinalExampleData$t0_item2)
ordinalExampleData$t0_item3 <- as.numeric(ordinalExampleData$t0_item3)
ordinalExampleData$t0_item4 <- as.numeric(ordinalExampleData$t0_item4)
ordinalExampleData$t0_item5 <- as.numeric(ordinalExampleData$t0_item5)

実行

scaleStructure(dat=ordinalExampleData, ci=TRUE)
Estimates assuming interval level:

             Omega (total): 0.78
      Omega (hierarchical): 0.74
   Revelle's omega (total): 0.81
Greatest Lower Bound (GLB): 0.82
             Coefficient H: 0.79
         Coefficient alpha: 0.78
Confidence intervals:
             Omega (total): [0.74, 0.82]
         Coefficient alpha: [0.74, 0.82]

Estimates assuming ordinal level:

     Ordinal Omega (total): 0.81
 Ordinal Omega (hierarch.): 0.81
  Ordinal Cronbach's alpha: 0.81
Confidence intervals:
     Ordinal Omega (total):  [0.78, 0.85]
  Ordinal Coefficient alpha: [0.77, 0.85]

polychoric()を用いた方法

ポリコリック相関のrhoをalpha()に入れれば順序αになる。ufsの計算で利用した"ordinalExampleData"を利用する。

library(psych)
OED.pc <- polychoric(ordinalExampleData)
alpha(OED.pc$rho)

結果。ufsで計算したものと同じ数値になることが確認できる。

  raw_alpha std.alpha G6(smc) average_r S/N median_r
      0.81      0.81    0.78      0.46 4.3     0.46

参照:
https://stackoverflow.com/questions/38040613/r-ordinal-alpha-reliability-err

順序αへの批判

www.ncbi.nlm.nih.gov

順序αは日常の信頼性分析や報告書に用いるべきものではなく、将来の応用試験において理論的に序数的な回答選択肢を増やすための、スピアマン・ブラウンの予言式に似た仮説的なツールとして理解されるべきものであると結論づけられた。

簡単に言い換えると、順序αは正規分布を前提とするポリコリック相関を使っていることに原因がある。回答分布は必ずしも正規分布ではなくゆがんでいることもあり、正確な正規分布であることはない。ポリコリック相関を用いる限りは、理論的近似値にすぎない。回答が正規分布から大きく歪む場合には、順序αは回答の分布次第で、実際よりも大きくなったり小さくなったりする、という問題がある。

無理なのは理解しているが、Wilcoxon-Mann-Whitney検定的な発想で代替的な指標の計算ができるといいのだろう。