|
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) 回答者毎の能力値を算出する。 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
...
リンク †R-Wiki。サンプル多数。 http://wiki.r-project.org/rwiki/doku.php?id=packages:cran:ltm ログ †アクセス数: 4619 人 コメント †
|