Rで項目反応理論

パッケージ

次のパッケージにも助けてもらっている。

使用方法

パッケージのロード

library(ltm)

このコマンドで、自動的に要求される他パッケージもロードされる。

polychoric相関係数などで一次元性の確認

1母数モデル

rasch(data)

2母数モデル

ltm(data~z1)

3母数モデル

tpm(data)

段階反応モデル

grm(data)

ICCのプロット

result <- rasch(data)、のように結果をresultオブジェクトに渡したとして、

1母数モデルの場合

plot.rasch(result)

2母数モデルの場合

plot.ltm(result)

3母数モデルの場合

plot.tpm(result)

IIC/TICのプロット

IICの場合

plot(result, type = "IIC")

とくにある変数について描画したい場合は、itemsで指定する。

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

上の例は、一番目の変数についてのIICを描画する。複数の変数を合わせて描画する際は、

plot(result, type="IIC", items=c(1, 2))

のようにする。

TICの場合

TICは全ての変数についてのIICの総和である。描画については、itemsオプションを0に指定すればよい。

plot(result, type="IIC", items=0)

スコアの算出

ltm関数などで推定したパラメタをもちいて、能力値を推定するには、factor.scores()関数を使う。

result <- ltm(data ~ z1, IRT.param=TRUE)
factor.scores(result)

このようにすると、観測された全ての反応パターンについての能力値が算出される。推定方法はmethodオプションで、ベイズ、EAP、MIから選択できる。

回答者毎の能力値が必要な場合は、resp.patternオプションで反応パターンデータを引き渡す。

factor.scores(result, resp.pattern=data)

これで一人ずつの能力値を得ることができる。

実行例

豊田秀樹(2002)の「項目反応理論(入門編)」に用いられたデータが、豊田研究室のサイトからダウンロードできるので、それをc:\tempに保存したとして実行例を示す。

まずはデータの読み込みである。

data <- read.fwf("c:/temp/gaku1.txt", widths=rep(1, 50))

もとのデータが50列×226行のデータなので、一列ずつ反応として読み込む。

中でもいくつかの変数だけ分析の対象とするので、新たにデータセットを作成。

data2 <-  subset(data,select=c("V2","V6","V7","V8","V11","V12","V14","V15","V16","V17",
"V18","V19","V20","V21","V22","V23","V24","V25","V26","V29",
"V30","V32","V33","V34","V35","V38","V40","V44","V46","V49"))

1母数モデルを実行してみる。

rasch(data2)

結果は次の通り。

Call:
rasch(data = data2)
Coefficients:
 Dffclt.V2   Dffclt.V6   Dffclt.V7   Dffclt.V8  Dffclt.V11  Dffclt.V12  
    -1.221      -1.064      -2.165      -1.824      -0.493      -1.534  
Dffclt.V14  Dffclt.V15  Dffclt.V16  Dffclt.V17  Dffclt.V18  Dffclt.V19  
    -1.932       0.594      -2.007      -1.331      -1.387      -2.436  
Dffclt.V20  Dffclt.V21  Dffclt.V22  Dffclt.V23  Dffclt.V24  Dffclt.V25  
    -2.387      -0.939      -0.988      -0.249       0.412       0.855  
Dffclt.V26  Dffclt.V29  Dffclt.V30  Dffclt.V32  Dffclt.V33  Dffclt.V34  
    -1.168       0.146      -0.607      -0.939      -0.095      -0.139  
Dffclt.V35  Dffclt.V38  Dffclt.V40  Dffclt.V44  Dffclt.V46  Dffclt.V49  
    -2.124       1.441       0.548       0.345       0.830      -0.939  
    Dscrmn  
     0.973  
Log.Lik: -3647.655

ltmではロジスティックモデルの定数項を1.0で推定するが、BILOG-MGなどでは一般にD=1.702で算出する。例えば豊田(2002)では識別力が0.574とあるが、ここでは0.973と推定される。結果を合わせるためには、識別力の推定値を1.7で割ればよい。

2母数モデルを実行してみる。

 ans <- ltm(data2 ~ z1)

結果は次の通り。

Call:
ltm(formula = data2 ~ z1)
Coefficients:
     Dffclt  Dscrmn
V2   -1.470   0.762
V6   -1.711   0.539
V7   -1.965   1.113
V8   -1.698   1.077
V11  -0.691   0.629
V12  -1.449   1.057
V14  -1.530   1.383
V15   0.600   0.946
V16  -1.570   1.409
V17  -1.503   0.827
V18  -1.655   0.772
V19  -1.544   2.109
V20  -1.762   1.545
V21  -0.902   1.039
V22  -0.902   1.123
V23  -0.227   1.210
V24   0.365   1.113
V25   0.851   0.970
V26  -1.187   0.955
V29   0.199   0.655
V30  -0.526   1.247
V32  -0.826   1.195
V33  -0.092   1.429
V34  -0.157   0.853
V35  -2.041   1.027
V38   1.888   0.687
V40   0.494   1.100
V44   0.535   0.566
V46   0.779   1.052
V49  -0.932   0.989
Log.Lik: -3625.593

ICCを画いてみた。

plot.ltm(ans)
ltmIcc.png

回答者毎の能力値を算出する。

factor.scores(ans, resp.pattern=data2)

結果の一部

Factor-Scores for observed response patterns:
    V2 V6 ... V49 Obs   Exp     z1 se.z1
1    0  0  ... 0   1 0.000  0.810 0.446
2    0  0  ... 0   1 0.001 -0.623 0.361
3    0  0  ... 0   1 0.000 -0.215 0.377
...

リンク

ログ

アクセス数: 18521 人


コメント



添付ファイル: fileltmIcc.jpg 1480件 [詳細] fileltmIcc.png 3678件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2023-03-25 (土) 11:19:17