岡本安晴(Y. Okamoto; 2012.5);Up

信頼性係数オメガ

ベイズ的分析による区間推定

参考文献:Y. Okamoto (2013). “A Direct Bayesian Estimation of Reliability” Behaviormetrika, 40, 149-168.

2013.08.28にプログラムを更新しました。

信頼性係数ωの説明は、岡本「心理学データ分析測定でも行っている。

 

 信頼性係数オメガreliability index の区間推定をベイズ的に行うプログラムOmegaMCMC.exeを作成した。このプログラムにより、係数ωの事後分布が図1のように得られる。

図1

 

実行形式プログラムOmegaMCMC.exeはクリックしてダウンロード・実行できるが、「*****.dllがありません」というようなエラーメッセージがでることがある。このときは、無料開発ツールであるVisual Studio 2013 Express for Windows Desktop

http://www.microsoft.com/visualstudio/jpn/downloads

からダウンロード・インストールすれば必要な「*****.dll」がインストールされる。このインストール後、プログラムOmegaMCMC.exeをダウンロード・実行できるようになる。

この事後分布から、パラメータの推定値(maximum a posteriori estimator: MAP estimator)を求めるとともに区間推定を行っている。これらの分析は、以下のテスト理論のモデル(McDonald, 1999, eq. (6.2))に基づいて行われている(関連ウェブサイトも参照)。

 まず、テスト得点を、次式の1因子モデルで表す。

ここで、は第j項目()の得点であり、は平均値、は真値、は誤差項(真値以外の要因によるもので、項目に特異な値を含む)である。は項目の共通因子であり、平均0、分散1の正規分布に従い、は平均0、分散の正規分布に従うものとする。は互いに独立であるとする。

 M個の項目の和をとる。

ここで、

である。

 このとき、真値の分散の分散に対する比率として、信頼性係数ωが次式により定義される。

の事後分布を、の事後分布から求める。の事後分布は、次式により与えられる。

ここで、およびは回答者i)の項目jにおける値であることを表す。また、

である。

 式(2)で与えられる事後分布をMCMCによるシミュレーションで推定すると、図1のような結果を得る。事前分布は、以下のように設定している。

ここで、は十分に広い範囲で一様分布であることを表し、は0以上の範囲で十分に広い範囲で一様分布であることを表す。

プログラムのソースコードファイルなどを圧縮ファイルとしてまとめて用意した。圧縮ファイル名OmegaMCMC.zipをクリックしてダウンロードすることができる。ダウンロードしたファイルOmegaMCMC.zipは、マウスの右ボタンでクリックして表示されるメニュから、「解凍」あるいは「展開」などを選んで解凍することができる。解凍したプログラムファイルはVisual C++ 2013で開くことができる。Visual C++ 2013は、無料開発ツールVisual Studio 2013 Express for Windows Desktop

http://www.microsoft.com/visualstudio/jpn/downloads

からダウンロード・インストールすれば使用できる。

実行形式のプログラムファイルOmegaMCMC.exeは、クリックしてダウンロード・実行することができる。プログラムを実行すると、図2のフォームが表示される。

図2

 

Print Data」にチェックを入れておくと、読み込んだデータも出力ファイルに出力されるので、データが正しく読み込まれたかどうかチェックできる。出力ファイルはテキストファイルなので、プログラムの実行終了後、エディタなどで開いて見ることができる。「GO」ボタンのクリックで、図3の入力データファイル名の設定を求めるダイアログ・ウィンドウが表示される。入力ファイルの形式は、後で説明する。

図3

 

入力データのファイル名を設定して、「開く」ボタンをクリックすると、次に出力用ファイルの名前の設定を求めるダイアログ・ウィンドウが表示される(図4)。

図4

 

出力は、テキストファイルとして書き出される。出力用テキストファイル名を設定して、「保存」ボタンをクリックすると、計算が始まる。計算が終了すると、図5のフォームが表示される。

図5

 

図5に描かれているのは、MCMCによる事後分布からのサンプリングの分布を、カーネル・スムーザーによって滑らかに描いたものである。この曲線は、カーネルの幅が小さすぎるとサンプリングの凸凹に過剰に対応したり(図7)、カーネルの幅が広すぎると過度に平坦になる(図8)。カーネルの幅は、図6の「W = 」の右側のテキストボックスの値で調整できる。値の再設定後、「Omega」ボタンのクリックで事後分布の再描画の計算が始まる。

図6

 

W = 0.1」と設定して「Omega」ボタンをクリックすると、図7のようなグラフになる。

図7

 

W = 10」で再計算を行うと、図8の結果を得る。

図8

 

図5の結果が適切であると判断できる。

描かれたグラフは、「Save」ボタンのクリックで保存することができる。

Close」ボタンのクリックでプログラムの実行終了となるが、その時に、図9のメッセージボックスが表示され、計算結果が図4で設定したファイルに保存された旨が表示される。

図9

 

OK」ボタンのクリックで、実行終了となる。

 

 図3で指定する入力用ファイルは、以下の形式で用意する。なお、SPSS用データファイルから本プログラム用データファイルを作成する方法については、<http://y-okamoto-psy1949.la.coocan.jp/booksetc/pm2010/omega/#SPSSFiles>を参照されたい。

 ファイルの先頭部分は、スラッシュ/(半角文字)で始まる行の次の行に項目数を書き、続く行にケースラベル(あるいは番号)を表す変量のラベルを書いてから、次に各変量のラベルを順番に書く。

 

======================================================

 

/

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

    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

       

       

       

   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\omega2\OmegaMCMC\OmegaMCMC\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

 

----------------- Main MCMC ----------------------

 

r_acpt_mu[0] = 0.48878

r_acpt_mu[1] = 0.46428

r_acpt_mu[2] = 0.40805

r_acpt_mu[3] = 0.47343

r_acpt_mu[4] = 0.48845

r_acpt_mu[5] = 0.47058

r_acpt_mu[6] = 0.47290

r_acpt_mu[7] = 0.46150

r_acpt_lmbd[0] = 0.46610

r_acpt_lmbd[1] = 0.46748

r_acpt_lmbd[2] = 0.41805

r_acpt_lmbd[3] = 0.47828

r_acpt_lmbd[4] = 0.44608

r_acpt_lmbd[5] = 0.47588

r_acpt_lmbd[6] = 0.49373

r_acpt_lmbd[7] = 0.44655

r_acpt_sgmE[0] = 0.45033

r_acpt_sgmE[1] = 0.45960

r_acpt_sgmE[2] = 0.41288

r_acpt_sgmE[3] = 0.45288

r_acpt_sgmE[4] = 0.49205

r_acpt_sgmE[5] = 0.46308

r_acpt_sgmE[6] = 0.46193

r_acpt_sgmE[7] = 0.49143

r_acpt_T[0] = 0.37183

r_acpt_T[1] = 0.37113

r_acpt_T[2] = 0.35508

r_acpt_T[3] = 0.33735

r_acpt_T[4] = 0.34433

r_acpt_T[5] = 0.34615

r_acpt_T[6] = 0.33768

r_acpt_T[7] = 0.38973

r_acpt_T[8] = 0.34055

r_acpt_T[9] = 0.36628

r_acpt_T[10] = 0.32140

r_acpt_T[11] = 0.37083

r_acpt_T[12] = 0.34388

r_acpt_T[13] = 0.32945

r_acpt_T[14] = 0.38198

r_acpt_T[15] = 0.33545

r_acpt_T[16] = 0.40608

r_acpt_T[17] = 0.34563

r_acpt_T[18] = 0.35015

r_acpt_T[19] = 0.34220

r_acpt_T[31] = 0.34915

r_acpt_T[32] = 0.30113

r_acpt_T[33] = 0.36295

r_acpt_T[34] = 0.33333

r_acpt_T[35] = 0.37265

r_acpt_T[36] = 0.34448

r_acpt_T[37] = 0.36303

r_acpt_T[38] = 0.39248

r_acpt_T[39] = 0.33125

r_acpt_T[40] = 0.34008

r_acpt_T[41] = 0.32868

r_acpt_T[42] = 0.34270

r_acpt_T[43] = 0.35295

r_acpt_T[44] = 0.33653

r_acpt_T[45] = 0.36173

r_acpt_T[46] = 0.33738

r_acpt_T[47] = 0.34398

r_acpt_T[48] = 0.32865

r_acpt_T[49] = 0.31958

 

Mean omega = 0.94540

 

lambda_mean[0] = 14.41370                         Q1 = 9.81908                  Med = 14.28156                Q3 = 19.11868                

lambda_mean[1] = 13.98646                         Q1 = 9.95161                  Med = 13.86730                Q3 = 18.28686                

lambda_mean[2] = 14.05368                         Q1 = 9.31224                  Med = 13.90954                Q3 = 19.13257                

lambda_mean[3] = 17.84847                         Q1 = 12.71646                 Med = 17.66421                Q3 = 23.10596                

lambda_mean[4] = 14.67915                         Q1 = 10.35771                 Med = 14.54231                Q3 = 19.46684                

lambda_mean[5] = 13.57809                         Q1 = 9.50663                  Med = 13.47926                Q3 = 17.88529                

lambda_mean[6] = 17.42041                         Q1 = 12.87030                 Med = 17.28198                Q3 = 22.54281                

lambda_mean[7] = 17.55109                         Q1 = 12.85886                 Med = 17.36117                Q3 = 22.75478                

sgmE_mean[0] = 10.52092                           Q1 = 8.18810                  Med = 10.42190                Q3 = 13.02909                

sgmE_mean[1] = 8.99148                            Q1 = 6.91157                  Med = 8.91412                 Q3 = 11.11532                

sgmE_mean[2] = 11.99379                           Q1 = 9.48207                  Med = 11.89899                Q3 = 14.63092                

sgmE_mean[3] = 10.78427                           Q1 = 8.34031                  Med = 10.70741                Q3 = 13.44118                 

sgmE_mean[4] = 10.11314                           Q1 = 7.88159                  Med = 10.02939                Q3 = 12.52127                

sgmE_mean[5] = 9.33486                            Q1 = 7.22619                  Med = 9.24931                 Q3 = 11.51613                

sgmE_mean[6] = 9.46666                            Q1 = 7.11798                  Med = 9.37700                 Q3 = 11.88494                

sgmE_mean[7] = 10.31009                           Q1 = 7.83934                  Med = 10.22589                Q3 = 12.92017                

 

omega_mean = 0.94540                              Q1 = 0.92014                  Med = 0.94670                 Q3 = 0.96860                 

 

95% HPD Interval of omega = [0.92014, 0.96860]

 

 

Omega(MAP) = 0.94900     kw = 1

 

Omega(MAP) = 0.948224342677012     kw = 0.1

 

Omega(MAP) = 0.946165070109531     kw = 10

 

======================================================

 

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に近いほど適合度は低い。

 最後にの値が出力されている。McDonald (1999)の式(6.20a)による値がOmega_aであり、式(6.20b)による値がOmega_bである。式(6.20a)において、各誤差項がお互いに独立であると仮定すると、式(6.20b)が導かれる。また、各因子負荷量が同じ値であると仮定して、共通の共分散を標本共分散の平均値で推定するものがアルファ係数である。

 

----------------- Main MCMC ----------------------」に続く部分が、ベイズ的分析をMCMCで行ったときの出力である。

***_acpt_***」の値は、MCMCでのサンプリングにおけるproposal値の採用率である。

 

Mean omega = 0.94540」はオメガの事後分布の平均値である。

その後、の平均値、第1四分位数、中央値、第3四分位数、およびの平均値、第1四分位数、中央値、第3四分位数が出力されている。[ ]内に示されている数値は、分析に用いられた項目の0から始まる通し番号であることに注意。

Omegaの平均値、第1四分位数、中央値、第3四分位数の出力に続いて、オメガの95% HPD確信区間が

95% HPD Interval of omega = [0.92014, 0.96860]

と出力されている。確信区間は信頼区間に相当するものである。

 最後に

 

Omega(MAP) = 0.94900     kw = 1

 

Omega(MAP) = 0.948224342677012     kw = 0.1

 

Omega(MAP) = 0.946165070109531     kw = 10

 

と出力されているのは、図6の「W = 0.1」などの設定によって事後分布のグラフを描いたときの、Wの値(kw = として出力されている)とMAP推定値を出力したものである。推定値としてMAPを用いることについては、<岡本安晴「上下法データのベイズ的分析」基礎心理学研究、2011>を参照されたい。

 

 

引用文献

McDonald, R. P. 1999. Test Theory: A unified treatment. Psychology Press.

岡本安晴(2011).信頼性係数のベイズ推定.日本テスト学会第9回大会発表論文抄録集120-123

 

Up