4  項目反応理論

この章では,項目反応理論(IRT)の各モデルとその可視化について紹介します。

4.1 IRTの実行

サンプルデータJ15S500(15項目・500人の二値データ)を使用します。

dat <- J15S500

4.1.1 IRT関数

IRT()関数は,model引数で2PLM(デフォルト),3PLM,4PLMを指定できます。

result <- IRT(dat, verbose = FALSE)
No ID column detected. All columns treated as response data. Sequential IDs (Student1, Student2, ...) were generated. Use id= parameter to specify the ID column explicitly.
No ID column detected. All columns treated as response data. Sequential IDs (Student1, Student2, ...) were generated. Use id= parameter to specify the ID column explicitly.
result
Item Parameters
       slope location PSD(slope) PSD(location)
Item01 0.698   -1.683     0.1093         0.266
Item02 0.810   -1.552     0.1166         0.221
Item03 0.559   -1.838     0.0988         0.338
Item04 1.416   -1.178     0.1569         0.113
Item05 0.681   -2.242     0.1152         0.360
Item06 0.997   -2.162     0.1499         0.273
Item07 1.084   -1.039     0.1281         0.130
Item08 0.694   -0.558     0.1002         0.153
Item09 0.347    1.630     0.0766         0.427
Item10 0.492   -1.421     0.0907         0.306
Item11 1.122    1.020     0.1314         0.124
Item12 1.216    1.031     0.1385         0.117
Item13 0.875   -0.720     0.1111         0.133
Item14 1.200   -1.232     0.1407         0.134
Item15 0.823   -1.203     0.1127         0.180

Item Fit Indices
       model_log_like bench_log_like null_log_like model_Chi_sq null_Chi_sq
Item01       -263.524       -240.190      -283.343       46.669      86.307
Item02       -252.914       -235.436      -278.949       34.954      87.025
Item03       -281.083       -260.906      -293.598       40.353      65.383
Item04       -205.851       -192.072      -265.962       27.558     147.780
Item05       -232.072       -206.537      -247.403       51.070      81.732
Item06       -173.930       -153.940      -198.817       39.981      89.755
Item07       -252.039       -228.379      -298.345       47.320     139.933
Item08       -313.754       -293.225      -338.789       41.057      91.127
Item09       -325.692       -300.492      -327.842       50.399      54.700
Item10       -309.448       -288.198      -319.850       42.500      63.303
Item11       -250.836       -224.085      -299.265       53.501     150.360
Item12       -240.247       -214.797      -293.598       50.900     157.603
Item13       -291.816       -262.031      -328.396       59.571     132.730
Item14       -224.330       -204.953      -273.212       38.754     136.519
Item15       -273.120       -254.764      -302.847       36.713      96.166
       model_df null_df   NFI   RFI   IFI   TLI   CFI RMSEA    AIC    CAIC
Item01       12      13 0.459 0.414 0.533 0.488 0.527 0.076 22.669 -39.906
Item02       12      13 0.598 0.565 0.694 0.664 0.690 0.062 10.954 -51.621
Item03       12      13 0.383 0.331 0.469 0.414 0.459 0.069 16.353 -46.222
Item04       12      13 0.814 0.798 0.885 0.875 0.885 0.051  3.558 -59.017
Item05       12      13 0.375 0.323 0.440 0.384 0.432 0.081 27.070 -35.505
Item06       12      13 0.555 0.517 0.640 0.605 0.635 0.068 15.981 -46.595
Item07       12      13 0.662 0.634 0.724 0.699 0.722 0.077 23.320 -39.255
Item08       12      13 0.549 0.512 0.633 0.597 0.628 0.070 17.057 -45.518
Item09       12      13 0.079 0.002 0.101 0.002 0.079 0.080 26.399 -36.177
Item10       12      13 0.329 0.273 0.405 0.343 0.394 0.071 18.500 -44.076
Item11       12      13 0.644 0.615 0.700 0.673 0.698 0.083 29.501 -33.075
Item12       12      13 0.677 0.650 0.733 0.709 0.731 0.081 26.900 -35.675
Item13       12      13 0.551 0.514 0.606 0.570 0.603 0.089 35.571 -27.004
Item14       12      13 0.716 0.692 0.785 0.765 0.783 0.067 14.754 -47.822
Item15       12      13 0.618 0.586 0.706 0.678 0.703 0.064 12.713 -49.862
           BIC
Item01 -27.906
Item02 -39.621
Item03 -34.222
Item04 -47.017
Item05 -23.505
Item06 -34.595
Item07 -27.255
Item08 -33.518
Item09 -24.177
Item10 -32.076
Item11 -21.075
Item12 -23.675
Item13 -15.004
Item14 -35.822
Item15 -37.862

Model Fit Indices
                   value
model_log_like -3890.655
bench_log_like -3560.005
null_log_like  -4350.217
model_Chi_sq     661.300
null_Chi_sq     1580.424
model_df         180.000
null_df          195.000
NFI                0.582
RFI                0.547
IFI                0.656
TLI                0.624
CFI                0.653
RMSEA              0.073
AIC              301.300
CAIC            -637.330
BIC             -457.330

4.1.2 モデルの指定

model引数で推定するパラメータ数を指定します。ショートカット関数RaschModel(), TwoPLM(), ThreePLM()も利用可能です。

# 2パラメータ・ロジスティックモデル(デフォルト)
result.2PL <- IRT(dat, model = 2, verbose = FALSE)
No ID column detected. All columns treated as response data. Sequential IDs (Student1, Student2, ...) were generated. Use id= parameter to specify the ID column explicitly.
No ID column detected. All columns treated as response data. Sequential IDs (Student1, Student2, ...) were generated. Use id= parameter to specify the ID column explicitly.
# 3パラメータ・ロジスティックモデル
result.3PL <- IRT(dat, model = 3, verbose = FALSE)
No ID column detected. All columns treated as response data. Sequential IDs (Student1, Student2, ...) were generated. Use id= parameter to specify the ID column explicitly.
No ID column detected. All columns treated as response data. Sequential IDs (Student1, Student2, ...) were generated. Use id= parameter to specify the ID column explicitly.

4.2 モデル適合度

exametrikaはモデル適合度として,飽和モデルとヌルモデルを基準にした各種指標を算出します。

  • 飽和モデル(Saturated Model):データに完璧に当てはまるモデル
  • ヌルモデル(Null Model):データ構造を全く仮定しないモデル
  • 推定したモデルは,この両モデルの間のどこかに位置します

飽和モデルとヌルモデル(Test Data Engineering, P.139)

カイ二乗(\(\chi^2\))値は,対数尤度に変換した後のモデル間の距離として解釈できます。

カイ二乗変換(Test Data Engineering, P.144)

SEMで用いられる標準化指標は,カイ二乗値を変換・標準化して表現したものです。

適合度指標(Test Data Engineering, P.148)

情報量基準も同様に,カイ二乗値に基づいて考えることができます。

情報量基準(Test Data Engineering, P.150)

4.2.1 適合度指標の確認

テスト全体の適合度指標にアクセスします。

result$TestFitIndices
  model_log_like bench_log_like null_log_like model_Chi_sq null_Chi_sq model_df
1      -3890.655      -3560.005     -4350.217     661.2999    1580.424      180
  null_df      NFI       RFI       IFI       TLI       CFI      RMSEA      AIC
1     195 0.581568 0.5466987 0.6563184 0.6236472 0.6525974 0.07320173 301.2999
       CAIC       BIC
1 -637.3296 -457.3296

項目ごとの適合度指標にアクセスします。

result$ItemFitIndices
       model_log_like bench_log_like null_log_like model_Chi_sq null_Chi_sq
Item01      -263.5243      -240.1896     -283.3432     46.66936    86.30724
Item02      -252.9135      -235.4364     -278.9486     34.95430    87.02454
Item03      -281.0830      -260.9064     -293.5981     40.35320    65.38341
Item04      -205.8510      -192.0718     -265.9618     27.55846   147.77999
Item05      -232.0722      -206.5372     -247.4032     51.06995    81.73195
Item06      -173.9301      -153.9397     -198.8174     39.98072    89.75530
Item07      -252.0388      -228.3788     -298.3455     47.32008   139.93348
Item08      -313.7538      -293.2252     -338.7888     41.05727    91.12723
Item09      -325.6916      -300.4923     -327.8422     50.39860    54.69970
Item10      -309.4482      -288.1984     -319.8497     42.49979    63.30265
Item11      -250.8358      -224.0855     -299.2653     53.50067   150.35960
Item12      -240.2466      -214.7967     -293.5981     50.89987   157.60288
Item13      -291.8161      -262.0307     -328.3959     59.57086   132.73044
Item14      -224.3296      -204.9528     -273.2123     38.75364   136.51897
Item15      -273.1202      -254.7637     -302.8469     36.71312    96.16648
       model_df null_df        NFI         RFI       IFI         TLI        CFI
Item01       12      13 0.45926485 0.414203591 0.5334323 0.487656724 0.52706775
Item02       12      13 0.59833967 0.564867971 0.6940427 0.664068641 0.68990951
Item03       12      13 0.38282211 0.331390623 0.4688763 0.413631888 0.45873713
Item04       12      13 0.81351697 0.797976715 0.8854142 0.874944352 0.88456402
Item05       12      13 0.37515318 0.323082614 0.4397124 0.384190641 0.43156059
Item06       12      13 0.55455867 0.517438559 0.6401439 0.605076827 0.63545553
Item07       12      13 0.66183876 0.633658655 0.7239184 0.698555346 0.72174340
Item08       12      13 0.54945113 0.511905392 0.6327779 0.597084013 0.62807755
Item09       12      13 0.07863105 0.001850299 0.1007289 0.002427135 0.07916351
Item10       12      13 0.32862541 0.272677525 0.4054929 0.343147136 0.39367428
Item11       12      13 0.64418190 0.614530390 0.7000521 0.672690832 0.69786846
Item12       12      13 0.67703720 0.650123635 0.7328359 0.708570655 0.73098830
Item13       12      13 0.55118916 0.513788260 0.6059746 0.569573968 0.60268366
Item14       12      13 0.71613001 0.692474177 0.7851441 0.765355002 0.78340462
Item15       12      13 0.61823375 0.586419899 0.7063782 0.678084940 0.70284764
            RMSEA       AIC      CAIC       BIC
Item01 0.07609078 22.669360 -39.90594 -27.90594
Item02 0.06191433 10.954305 -51.62099 -39.62099
Item03 0.06881136 16.353196 -46.22210 -34.22210
Item04 0.05097326  3.558461 -59.01684 -47.01684
Item05 0.08077566 27.069950 -35.50535 -23.50535
Item06 0.06835787 15.980719 -46.59458 -34.59458
Item07 0.07680154 23.320078 -39.25522 -27.25522
Item08 0.06966049 17.057272 -45.51802 -33.51802
Item09 0.08007866 26.398603 -36.17669 -24.17669
Item10 0.07136865 18.499788 -44.07551 -32.07551
Item11 0.08325046 29.500668 -33.07463 -21.07463
Item12 0.08059965 26.899866 -35.67543 -23.67543
Item13 0.08913117 35.570860 -27.00444 -15.00444
Item14 0.06684217 14.753638 -47.82166 -35.82166
Item15 0.06424256 12.713116 -49.86218 -37.86218

4.3 可視化(baseグラフィックス)

plot()関数のtype引数で表示する図の種類を選択します。

4.3.1 項目反応関数(IRF / ICC)

plot(result, items = 1, type = "IRF")

overlay = TRUEで複数項目を重ね描きできます。

plot(result, items = 1:6, type = "IRF", overlay = TRUE)

nr(行数)とnc(列数)でレイアウトを指定できます。

plot(result, items = 1:6, type = "IRF", nr = 3, nc = 2)

4.3.2 テスト反応関数(TRF)

plot(result, type = "TRF")

4.3.3 項目情報関数(IIF / IIC)

plot(result, items = 1:15, type = "IIC", overlay = TRUE)

4.3.4 テスト情報関数(TIF / TIC)

plot(result, type = "TIC")

4.4 可視化(ggExametrika)

ggExametrikaパッケージを使うと,ggplot2ベースの図が得られます。

library(ggExametrika)

4.4.1 plotICC_gg / plotICC_overlay_gg

plotICC_gg(result, items = 1)
[[1]]

plotICC_overlay_gg(result, items = 1:6)

4.4.2 plotTRF_gg

plotTRF_gg(result)

4.4.3 plotIIC_gg / plotIIC_overlay_gg

plotIIC_gg(result, items = 1)
[[1]]

plotIIC_overlay_gg(result, items = 1:6)

4.4.4 plotTIC_gg

plotTIC_gg(result)

4.5 受検者能力推定

EAP(期待事後)推定値とPSD(事後標準偏差)が出力されます。

result$ability |> head(20)
           ID         EAP       PSD
1  Student001 -0.66456783 0.5457047
2  Student002 -0.14853711 0.5626979
3  Student003  0.01362524 0.5699764
4  Student004  0.58775674 0.6012839
5  Student005 -0.97796891 0.5415528
6  Student006  0.85892499 0.6187224
7  Student007  0.05696150 0.5720483
8  Student008  0.04790644 0.5716114
9  Student009  1.23035675 0.6433919
10 Student010 -0.19705221 0.5606753
11 Student011 -0.34067163 0.5551509
12 Student012 -0.51385235 0.5495270
13 Student013  1.05114795 0.6316587
14 Student014  0.81625131 0.6158909
15 Student015 -1.35345911 0.5440716
16 Student016 -1.53285023 0.5476039
17 Student017  0.62954564 0.6038740
18 Student018 -0.96955182 0.5415909
19 Student019  0.73791230 0.6107655
20 Student020 -0.80866473 0.5431159

4.6 Q3行列

局所独立の仮定が満たされているかどうかを判断する指標です。項目残差間の相関行列であり,値が高すぎると局所独立の仮定に問題がある可能性があります。

result$Q3mat
        Item01  Item02   Item03   Item04   Item05   Item06   Item07  Item08
Item01  1.0000 -0.0535 -0.08856 -0.13197  0.05521  0.01128 -0.09982  0.0139
Item02 -0.0535  1.0000  0.00440 -0.02750 -0.02981 -0.03641 -0.10196 -0.0638
Item03 -0.0886  0.0044  1.00000  0.00363  0.00902  0.00334  0.01898 -0.0465
Item04 -0.1320 -0.0275  0.00363  1.00000 -0.08089 -0.12016 -0.03221 -0.0855
Item05  0.0552 -0.0298  0.00902 -0.08089  1.00000 -0.06635 -0.04430 -0.0596
Item06  0.0113 -0.0364  0.00334 -0.12016 -0.06635  1.00000 -0.02694  0.0255
Item07 -0.0998 -0.1020  0.01898 -0.03221 -0.04430 -0.02694  1.00000 -0.0245
Item08  0.0139 -0.0638 -0.04653 -0.08547 -0.05961  0.02546 -0.02450  1.0000
Item09  0.0191 -0.0541 -0.03816 -0.05523 -0.08799 -0.07573 -0.01889 -0.0744
Item10 -0.0392 -0.0409 -0.02099 -0.09241 -0.01727 -0.02101  0.00508 -0.0625
Item11 -0.0281 -0.0171 -0.07191 -0.07304 -0.05427 -0.10232 -0.06882  0.0049
Item12 -0.0683 -0.0562 -0.07754 -0.01098 -0.06810 -0.09014 -0.07219 -0.0672
Item13 -0.0342 -0.0820 -0.01490 -0.07015  0.02738 -0.08209 -0.10070 -0.0297
Item14 -0.0209 -0.0496 -0.11632 -0.16292 -0.04666 -0.02432 -0.15965 -0.1019
Item15 -0.0343 -0.0436 -0.07199 -0.03444 -0.05169  0.03602 -0.05857 -0.0781
         Item09   Item10   Item11  Item12   Item13   Item14  Item15
Item01  0.01906 -0.03915 -0.02813 -0.0683 -0.03423 -0.02090 -0.0343
Item02 -0.05412 -0.04094 -0.01708 -0.0562 -0.08200 -0.04963 -0.0436
Item03 -0.03816 -0.02099 -0.07191 -0.0775 -0.01490 -0.11632 -0.0720
Item04 -0.05523 -0.09241 -0.07304 -0.0110 -0.07015 -0.16292 -0.0344
Item05 -0.08799 -0.01727 -0.05427 -0.0681  0.02738 -0.04666 -0.0517
Item06 -0.07573 -0.02101 -0.10232 -0.0901 -0.08209 -0.02432  0.0360
Item07 -0.01889  0.00508 -0.06882 -0.0722 -0.10070 -0.15965 -0.0586
Item08 -0.07436 -0.06251  0.00490 -0.0672 -0.02972 -0.10189 -0.0781
Item09  1.00000 -0.10174 -0.05357  0.0772 -0.00977  0.01932 -0.0708
Item10 -0.10174  1.00000 -0.02597 -0.0902  0.01259  0.02296 -0.0529
Item11 -0.05357 -0.02597  1.00000 -0.0630 -0.15170  0.00762 -0.0948
Item12  0.07724 -0.09020 -0.06302  1.0000 -0.09172 -0.05197 -0.0887
Item13 -0.00977  0.01259 -0.15170 -0.0917  1.00000 -0.03881  0.0113
Item14  0.01932  0.02296  0.00762 -0.0520 -0.03881  1.00000 -0.0680
Item15 -0.07085 -0.05290 -0.09481 -0.0887  0.01128 -0.06801  1.0000

4.7 段階反応モデル(GRM)

Graded Response Model(Samejima, 1969)は,順序カテゴリの反応データに対するIRTモデルです。K段階のカテゴリデータに対して,k以上のカテゴリに反応する確率を2PLモデルのように推定します。

サンプルデータJ5S1000(5項目・1000人の順序データ)を使用します。

dat_grm <- J5S1000
TestStatistics(dat_grm)
Test Statistics
                   value
SampleSize 1000.00000000
TestLength    5.00000000
Median       12.00000000
Max          18.00000000
Min           4.00000000
Range        14.00000000
Mean         11.45700000
SD            2.92107578
Skewness     -0.08836075
Kurtosis     -0.55776379
Alpha         0.59462241
result.GRM <- GRM(dat_grm, verbose = FALSE)
result.GRM
Item Parameter
   Slope Threshold1 Threshold2 Threshold3
V1 0.928     -1.662     0.0551       1.65
V2 1.234     -0.984     1.1297         NA
V3 0.917     -1.747    -0.0826       1.39
V4 1.479     -0.971     0.8901         NA
V5 0.947     -1.449     0.0302       1.62

Item Fit Indices
   model_log_like bench_log_like null_log_like model_Chi_sq null_Chi_sq
V1      -1297.780      -1086.461     -1363.667      422.638     554.411
V2       -947.222       -840.063     -1048.636      214.317     417.145
V3      -1307.044      -1096.756     -1373.799      420.575     554.085
V4       -936.169       -819.597     -1062.099      233.142     485.003
V5      -1308.149      -1096.132     -1377.883      424.033     563.502
   model_df null_df   NFI   RFI   IFI   TLI   CFI RMSEA     AIC    CAIC     BIC
V1       46      45 0.238 0.254 0.259 0.277 0.261 0.091 330.638  58.881 104.881
V2       31      30 0.486 0.503 0.525 0.542 0.526 0.077 152.317 -30.823   0.177
V3       46      45 0.241 0.257 0.263 0.280 0.264 0.090 328.575  56.819 102.819
V4       31      30 0.519 0.535 0.555 0.570 0.556 0.081 171.142 -11.998  19.002
V5       46      45 0.248 0.264 0.270 0.287 0.271 0.091 332.033  60.277 106.277

Model Fit Indices
                   value
model_log_like -5796.363
bench_log_like -4939.010
null_log_like  -6226.083
model_Chi_sq    1714.706
null_Chi_sq     2574.146
model_df         200.000
null_df          195.000
NFI                0.334
RFI                0.351
IFI                0.362
TLI                0.379
CFI                0.363
RMSEA              0.087
AIC             1314.706
CAIC             133.155
BIC              333.155

4.7.1 GRMの可視化(baseグラフィックス)

plot(result.GRM, type = "IRF", items = 2)

plot(result.GRM, type = "IRF", items = c(1, 3, 4, 5), nc = 2, nr = 2)

plot(result.GRM, type = "IIF", nr = 2, nc = 2)

plot(result.GRM, type = "TIF")

4.7.2 GRMの可視化(ggExametrika)

plotICRF_gg(result.GRM, items = 1)
[[1]]

plotTIC_gg(result.GRM)

4.8 補助関数

exametrikaには,IRTモデルの計算に用いる補助関数も公開されています。

# ロジスティックモデルの確率
# ggExametrikaがマスクするため exametrika:: で呼び出す
exametrika::LogisticModel(a = 1, b = 0, c = 0, d = 1, theta = 0)
[1] 0.5
# 2PLMの項目情報関数
exametrika::IIF2PLM(a = 1.5, b = 0.5, theta = 0)
[1] 0.4902637
# 3PLMの項目情報関数
exametrika::IIF3PLM(a = 1.5, b = 0.5, c = 0.2, theta = 0)
[1] 0.2755452
# GRMの反応確率
exametrika::grm_prob(theta = 0, a = 1.5, b = c(-1, 0, 1))
[1] 0.1824255 0.3175745 0.3175745 0.1824255
# GRMの項目情報関数
exametrika::grm_iif(theta = 0, a = 1.5, b = c(-1, 0, 1))
[1] 2.00845

4.9 コラム:態度測定論

  • 社会的態度は社会心理学の分野で考えられてきた連続的潜在変数です
    • サーストンの考えた測定方法(等現間隔法)を使って測定する一次元モデルです
    • リッカートの方法はサーストン法の簡易版として出てきた態度モデルです
  • 昨今は「心の測定」「心理学的連続体」「心理尺度の妥当性」が問題になっています
  • 心理尺度(リッカート法)は一朝一夕に作れるものではありません
  • 心理尺度は領域・方法・標準化など,使用法によく注意して利用しましょう

GRMは正規分布する連続的潜在変数\(\theta\)を仮定し,数値が高くなるとより上位のカテゴリに反応しやすくなるモデルです。リッカート法のIRT版とも言え,反応カテゴリに順序性を仮定した因子分析と数学的に等価です。カテゴリ反応で多因子モデルの場合は,mirtパッケージ(Multidimensional IRT)やlavaanパッケージ(Latent Variable Analysis)で推定しましょう。