係数オメガ
因子モデルに基づく信頼性係数(最小2乗法)
Python版のウェブサイトも用意しました。
ベイズ的分析によるプログラムは別のウェイブサイトに用意した。
本ウェブサイトのプログラム用データファイルをSPSSのデータファイルから用意する方法の説明も用意している。
本書「心理学データ分析と測定」の「8.1 分析例」に対応した説明は、このウェブサイトの後半で行っている。
信頼性係数としてオメガ(McDonald, 1999)を求めるVisual C++プログラムを作成してみた。信頼性係数は、項目jの得点の因子モデル
に基づいて算出される。ここで、は測定対象の値(真値)、は項目jに固有の特性など誤差項としてまとめたものである。は平均0、分散1に標準化されたものを考えるが、は素点である。
項目が項目あるとし、それらの合計点がテスト得点として算出されるとする。
である。このとき、オメガは次式で与えられる。
の平均が0、分散が1であることから式(3)は
と書ける。式番号(6.20a)はMcDonald (1999)におけるものである。
さらに、各が他の変数と独立であるとすると、式(6.20a)は
と書ける。
各項目の真値の係数(因子負荷量)が同じであるとき、アルファ係数の公式が導かれる。
なお、項目が離散的な値をとる場合(<「当てはまる」、「どちらでもない」、「当てはまらない」>とか<「賛成」、「どちらかといえば賛成」、「どちらかといえば反対」、「反対」>のように選択肢で回答する場合)の分析法については、<カテゴリ型項目の信頼性係数>で説明している。
モデル(1)におけるの推定を、以下に説明するプログラムCalcReliability.exeでは反復最小2乗法で行っている。すなわち、因子分析における主因子法の計算方法を共分散行列に適用して因子負荷量を推定している。詳しくは、本書「心理学データ分析と測定」の「第8章 心理学的特性を測る:心理尺度」を参照されたい。
実行形式のプログラムは、ファイル名CalcReliability.exeをクリックしてダウンロード・実行することができる。プログラムのソースコードファイルなどは圧縮ファイルCalcReliability.zipとしてまとめた。圧縮ファイル名CalcReliability.zipをクリックしてダウンロードすることができる。ダウンロードした圧縮ファイルは、マウス右ボタンでクリックして表示されるメニュから「解凍」あるいは「展開」を選んで解凍することができる。解凍したファイルはVisual C++2013などで開くことができる。
プログラムを実行すると、図1のフォームが表示される。
図1
「Print Data」にチェックを入れておくと、読み込んだデータも出力ファイルに出力される。出力ファイルはテキストファイルなので、プログラムの実行終了後、エディタなどで開いて見ることができる。「GO」ボタンのクリックで、図2の入力データファイル名の設定を求めるダイアログ・ウィンドウが表示される。入力ファイルの形式は、後で説明する。
図2
入力データのファイル名を設定して、「開く」ボタンをクリックすると、次に出力用ファイルの名前の設定を求めるダイアログ・ウィンドウが表示される(図3)。
図3
出力はテキストファイルとして書き出される。出力用テキストファイル名を設定して、「保存」ボタンをクリックすると計算が始まる。計算が終了すると、出力用ファイルの保存が行われたことを示すダイアログ・ウィンドウが表示される(図4)。
図4
「OK」ボタンをクリックすると、プログラムの実行が終了する。
図2で指定する入力用ファイルは、以下の形式で用意する。なお、SPSSのデータファイルから、Excelとメモ帳を使って以下に説明する形式のテキストファイルを作成する方法については、<「SPSSデータファイルのExcelとメモ帳による変換」(pdfファイル)>を参照されたい。
プログラムでは、ファイルの先頭部分のスラッシュ/(半角文字)で始まる行までは、読み飛ばされる。このスラッシュで始まる行の次の行に、項目数を書き、続く行にケースラベル/番号を表す文字列(あるいは数値)を書いてから各変量のラベルを書く。
======================================================
/
10
ID Item-1 Item-2 Item-3 Item-4 Item-5 Item-6 Item-7 Item-8 Item-9 Item-10
/
1
1
1
1
1
1
1
1
1
1
/
1
79 46
68
65 89
38
58 70
49 65
2
48 71
61
50 43
27
48 54
34 61
3
38 42 38
45
55
43
47
39
65 54
4
45 51
30
71 63
45
62 58
34 51
5
74 54
47
60 44
59 66 80
45 54
6
63 66
58
62 74
31
75 74
58 67
7
65 65
61
52 62
29
64 60
29 64
8 72
85
89 82
75
11 76
73
60 82
9
31 34
27
39 40
34
25 27
36 26
10
62 78
45
61 60 60
47 39
63 48
・
・
・
39
56 62
51
65 54
34
66 58
26 54
40
58 64
70
59 67
54
69 57 56 49
41
62 53
52
45 37
43
40 46
17 40
42
19 25
21
32 36
65
38 22
51 33
43
56 46 34
33 32
58
40 37
52 32
44
62 75
85
74 65
58
76 89
63 68
45
37 33
20
28 50
26 36
15
55 30
46
44 46
59
50 28
62
53 38
28 53
47
27 32
56
39 43
55
51 28
61 50
48 36
46
49
54
31
75
43
40
30
49
49
44 24
56
51 58
34
42 52
67 48
50
71 75
64
84 58 25
67 65
47 56
/
=====================================================
2つ目のスラッシュ/で始まる行に続く行に、オメガ係数の算出に用いる変数の選択を示す値を並べる。値が1であればオメガ係数の算出に用いられ、1以外であればその変数は除かれる。上のファイル例の場合は、すべての変数がオメガ係数の算出に用いられる。
3つ目のスラッシュ/で始まる行の次の行から、1行に1人分のデータを書いていく。各行は、まずケースラベル/番号を表す文字列を書き、その後に各変数(項目)の値を書いていく。データの最後は、スラッシュ/で始まる行を置いてデータの終わりであることを示す。
上の入力データの場合の出力ファイルの内容は、次のようになっている。
======================================================
Data File = D:\yasuharu\www\LaCoocan\booksetc\pm2010\omega\CalcReliability\CalcReliability\Data10.txt
Variable Labels...
Item-1(1)
Item-2(1)
Item-3(1)
Item-4(1)
Item-5(1)
Item-6(1)
Item-7(1)
Item-8(1)
Item-9(1)
Item-10(1)
NVars = 10 NCases = 50
M = 10
Vars Selected...
Item-1
Item-2
Item-3 Item-4 Item-5 Item-6 Item-7 Item-8 Item-9 Item-10
GC-Alpha = 0.87874
Lambda[0]**2 / VarX[0]**2 = 0.62047
Lambda[1]**2 / VarX[1]**2 = 0.68193
Lambda[2]**2 / VarX[2]**2 = 0.55300
Lambda[3]**2 / VarX[3]**2 = 0.70249
Lambda[4]**2 / VarX[4]**2 = 0.66380
Lambda[5]**2 / VarX[5]**2 = 0.01035
Lambda[6]**2 / VarX[6]**2 = 0.65218
Lambda[7]**2 / VarX[7]**2 = 0.74611
Lambda[8]**2 / VarX[8]**2 = 0.01105
Lambda[9]**2 / VarX[9]**2 = 0.71423
Item-1: lambda[0] = 12.99009
Item-2: lambda[1] = 12.64156
Item-3: lambda[2] = 12.76465
Item-4: lambda[3] = 16.07550
Item-5: lambda[4] = 13.39686
Item-6: lambda[5] = -1.71878
Item-7: lambda[6] = 12.30094
Item-8: lambda[7] = 15.70182
Item-9: lambda[8] = 1.61144
Item-10: lambda[9] = 15.80337
GFI = 0.99511
Omega_a = 0.90654
Omega_b = 0.90616
======================================================
「Variable Labels…」に続く出力は、各変数のラベルとそれに対する選択・非選択を示す値として入力ファイルで設定されたものである。
「GC-Alpha」の値は、McDonald (1999)がGuttman-Cronbach alphaとも呼んでいるもので、いわゆるアルファ係数である。
続いて
の値が出力されている。これは、項目ごとにおける真値の分散の割合である。
次に、各の値が出力されている。モデル(1)が素点に対する因子モデルであるので、因子負荷量の値は1より大きくなり得る。
「GFI」は、モデル(1)の適合度(goodness of fit index)を表し、McDonald (1999)の式(6.9)によって算出されているものである(本書「心理学データ分析と測定」の「第8章 心理学的特性を測る」参照)。GFIは1に近いほど適合度は高く、0に近いほど適合度は低い。
最後にの値が出力されている。式(6.20a)による値がOmega_aであり、式(6.20b)による値がOmega_bである。式(6.20a)において各誤差項がお互いに独立であると仮定して式(6.20b)が導かれ、各因子負荷量が同じ値であると仮定して共通の共分散を標本共分散の平均値で推定するものがアルファ係数である。
上の出力におけるの値を見ると、項目Item-6の値は負であり、Item-9の値は他と比べて小さい。これらの項目を除いて以下のように再計算を行った。
Item-6とItem-9をアルファ係数の算出から除くため、上の入力用ファイルを以下のように変更する。
======================================================
/
10
ID Item-1 Item-2 Item-3 Item-4 Item-5 Item-6 Item-7 Item-8 Item-9 Item-10
/
1
1
1
1
1
0
1
1
0 1
/
1
79 46
68
65 89
38
58 70
49 65
2
48 71
61
50 43
27
48 54
34 61
3 38 42 38 45 55 43 47 39 65 54
・
・
・
======================================================
すなわち、Item-6とItem-9に対する値を1から0に変更する。このデータを入力ファイルとしてオメガ係数を求めると、以下の出力ファイルを得る。
===================================================
Data File =
D:\yasuharu\www\LaCoocan\booksetc\pm2010\omega\CalcReliability\CalcReliability\Data10Sel.txt
Variable Labels...
Item-1(1)
Item-2(1)
Item-3(1)
Item-4(1)
Item-5(1) Item-6(0) Item-7(1) Item-8(1) Item-9(0) Item-10(1)
NVars = 10 NCases = 50
M = 8
Vars Selected...
Item-1
Item-2
Item-3 Item-4 Item-5 Item-7 Item-8 Item-10
GC-Alpha = 0.93991
Lambda[0]**2 / VarX[0]**2 = 0.61837
Lambda[1]**2 / VarX[1]**2 = 0.68261
Lambda[2]**2 / VarX[2]**2 = 0.54611
Lambda[3]**2 / VarX[3]**2 = 0.70852
Lambda[4]**2 / VarX[4]**2 = 0.65920
Lambda[5]**2 / VarX[5]**2 = 0.65277
Lambda[6]**2 / VarX[6]**2 = 0.74942
Lambda[7]**2 / VarX[7]**2 = 0.71547
Item-1: lambda[0] = 12.96813
Item-2: lambda[1] = 12.64792
Item-3: lambda[2] = 12.68483
Item-4: lambda[3] = 16.14445
Item-5: lambda[4] = 13.35040
Item-7: lambda[5] = 12.30649
Item-8: lambda[6] = 15.73652
Item-10: lambda[7] = 15.81708
GFI = 0.99867
Omega_a = 0.94156
Omega_b = 0.94154
====================================================
オメガ係数の値が0.91から0.94に上がっていることがわかる。
本書「心理学データ分析と測定」の「8.1 分析例」におけるプログラムの実行例
「8.1 分析例」では、表8.1.1のデータ(DataTable811.txt)を扱っている。このデータを、因子分析のプログラム(実行形式fa_pf.exe、プログラムソースコードファイルなどの圧縮ファイルfa_pf.zip)で因子数2を指定して分析すると、以下の結果を得る。
Data File = D:\yasuharu\www\LaCoocan\booksetc\pm2010\omega\fa_pf\fa_pf\DataTable811.txt
/
Vars = X1 X2 X3 X4 X5 X6
n = 50
mean sd
X1 3.840 1.891
X2 4.040 1.843
X3 4.000 1.908
X4 4.240 1.924
X5 4.160 1.891
X6 4.120 1.545
相関行列
X1 X2 X3 X4 X5 X6
X1 1.00000 0.71914 -0.73190 -0.09390 -0.65309 0.69148
X2 0.71914 1.00000 -0.68238 0.05932 -0.68471 0.69371
X3 -0.73190 -0.68238 1.00000 0.00545 0.65982 -0.67870
X4 -0.09390 0.05932 0.00545 1.00000 -0.08752 -0.04334
X5 -0.65309 -0.68471 0.65982 -0.08752 1.00000 -0.60929
X6 0.69148 0.69371 -0.67870 -0.04334 -0.60929 1.00000
相関行列の固有値
Cum.Sum Cum.Prop(%)
1: 3.72318 3.72318 62.1
2: 1.03244 4.75561 79.3
3: 0.37846 5.13407 85.6
4: 0.32738 5.46145 91.0
5: 0.29449 5.75594 95.9
6: 0.24406 6.00000 100.0
繰り返し回数 = 2310
抽出された因子数 = 2
初期解
Factor-1 Factor-2 Communalities
X1 0.86204 -0.15069 0.76581
X2 0.84843 0.09641 0.72914
X3 -0.83419 0.01656 0.69614
X4 -0.00045 0.61304 0.37582
X5 -0.78448 -0.14684 0.63697
X6 0.80466 -0.06588 0.65181
バリマックス回転後の因子パターン
Factor-1 Factor-2 Communalities
X1 0.86176 -0.15226 0.76581
X2 0.84861 0.09486 0.72914
X3 -0.83415 0.01808 0.69614
X6 0.80454 -0.06734 0.65181
X5 -0.78475 -0.14541 0.63697
X4 0.00067 0.61304 0.37582
Contri. 3.422 0.434
プロマックス回転後の因子パターン (r = 4)
Factor-1 Factor-2
X1 0.85963 -0.15076
X2 0.84997 0.09637
X3 -0.83392 0.01661
X6 0.80360 -0.06593
X5 -0.78682 -0.14682
X4 0.00933 0.61312
因子相関行列...
Factor-1 Factor-2
Factor-1 1.00000 -0.01590
Factor-2 -0.01590 1.00000
プロマックス回転後の構造行列
Factor-1 Factor-2
X1 0.86203 -0.16443
X2 0.84844 0.08286
X3 -0.83418 0.02987
X6 0.80465 -0.07871
X5 -0.78449 -0.13430
X4 -0.00042 0.61297
本書「心理学データ分析と測定」の表8.1.2(固有値)と表8.1.3(バリマックス回転後の因子パターン)を確認することができる。
項目X4を除いたデータ(DataX4Del.txt)に対して、因子数1を指定したときの解は以下のようになる。
Data File = D:\yasuharu\www\LaCoocan\booksetc\pm2010\omega\fa_pf\fa_pf\DataX4Del.txt
/
Vars = X1 X2 X3 X5 X6
n = 50
mean sd
X1 3.840 1.891
X2 4.040 1.843
X3 4.000 1.908
X5 4.160 1.891
X6 4.120 1.545
相関行列
X1 X2 X3 X5 X6
X1 1.00000 0.71914 -0.73190 -0.65309 0.69148
X2 0.71914 1.00000 -0.68238 -0.68471 0.69371
X3 -0.73190 -0.68238 1.00000 0.65982 -0.67870
X5 -0.65309 -0.68471 0.65982 1.00000 -0.60929
X6 0.69148 0.69371 -0.67870 -0.60929 1.00000
相関行列の固有値
Cum.Sum Cum.Prop(%)
1: 3.72318 3.72318 74.5
2: 0.39739 4.12056 82.4
3: 0.33174 4.45230 89.0
4: 0.29459 4.74690 94.9
5: 0.25310 5.00000 100.0
繰り返し回数 = 21
抽出された因子数 = 1
初期解
Factor-1 Communalities
X1 0.85522 0.73139
X2 0.84752 0.71829
X3 -0.83703 0.70062
X5 -0.77942 0.60749
X6 0.80582 0.64934
表8.1.4(因子負荷量)に示されている結果を確認することができる。
項目4(X4)を除き、項目3と5(X3とX5)のスコアをそれぞれ逆転したとき(DataX4Del_X3X5Inv.txt)の信頼性係数を、プログラム(実行形式CalcReliability.exe、ソースコードファイルなどの圧縮ファイルCalcReliability.zip)で求めると以下のようになる。
Data File = D:\yasuharu\www\LaCoocan\booksetc\pm2010\omega\CalcReliability\CalcReliability\DataX4Del_X3X5Inv.txt
Variable Labels...
X1(1) X2(1) X3I(1) X3(0) X5I(1) X5(0) X6(1)
NVars = 7 NCases = 50
M = 5
Vars Selected...
X1 X2 X3I X5I X6
GC-Alpha = 0.91268
Lambda[0]**2 / VarX[0]**2 = 0.73122
Lambda[1]**2 / VarX[1]**2 = 0.71524
Lambda[2]**2 / VarX[2]**2 = 0.70067
Lambda[3]**2 / VarX[3]**2 = 0.61077
Lambda[4]**2 / VarX[4]**2 = 0.64902
X1: lambda[0] = 1.63310
X2: lambda[1] = 1.57488
X3I: lambda[2] = 1.61322
X5I: lambda[3] = 1.49254
X6: lambda[4] = 1.25694
GFI = 0.99966
Omega_a = 0.91459
Omega_b = 0.91457
本書「心理学データ分析と測定」の「8.1 分析例」に示されている値
が確認できる。
なお、Visual C++プログラミング入門書として<岡本安晴「大学生のための心理学VC++プログラミング入門」勁草書房>を用意した。
引用文献
McDonald, R. P. 1999. Test Theory: A unified treatment. Psychology Press.