Rで項目反応理論
の編集
http://www.okadajp.org/RWiki/?R%E3%81%A7%E9%A0%85%E7%9B%AE%E5%8F%8D%E5%BF%9C%E7%90%86%E8%AB%96
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
(no template pages)
COLOR(red){SIZE(30){Rで項目反応理論}} #contents *パッケージ [#s5504cb5] -[[ltm(潜在特性モデル)パッケージ中のオブジェクト一覧]] 次のパッケージにも助けてもらっている。 --MASS --msm --mvtnorm --polycor ->[[polycorパッケージによる順序相関係数の算出]] --sfsmisc *使用方法 [#hcb69bb5] **パッケージのロード [#t88cbb2c] library(ltm) このコマンドで、自動的に要求される他パッケージもロードされる。 **polychoric相関係数などで一次元性の確認 [#s4322182] **1母数モデル [#i897802c] rasch(data) **2母数モデル [#pd300b47] ltm(data~z1) **3母数モデル [#aa6d4336] tpm(data) **段階反応モデル [#k11f7fbc] grm(data) **ICCのプロット [#w7df02de] result <- rasch(data)、のように結果をresultオブジェクトに渡したとして、 ***1母数モデルの場合 [#r57894c9] plot.rasch(result) ***2母数モデルの場合 [#t2d9151e] plot.ltm(result) ***3母数モデルの場合 [#r776aee6] plot.tpm(result) **IIC/TICのプロット [#h231df5b] ***IICの場合 [#a9c89d6e] plot(result, type = "IIC") とくにある変数について描画したい場合は、itemsで指定する。 plot(result, type= "IIC", items=1) 上の例は、一番目の変数についてのIICを描画する。複数の変数を合わせて描画する際は、 plot(result, type="IIC", items=c(1, 2)) のようにする。 ***TICの場合 [#z362f42e] TICは全ての変数についてのIICの総和である。描画については、itemsオプションを0に指定すればよい。 plot(result, type="IIC", items=0) **スコアの算出 [#zee51667] ltm関数などで推定したパラメタをもちいて、能力値を推定するには、factor.scores()関数を使う。 result <- ltm(data ~ z1, IRT.param=TRUE) factor.scores(result) このようにすると、観測された全ての反応パターンについての能力値が算出される。推定方法はmethodオプションで、ベイズ、EAP、MIから選択できる。 回答者毎の能力値が必要な場合は、resp.patternオプションで反応パターンデータを引き渡す。 factor.scores(result, resp.pattern=data) これで一人ずつの能力値を得ることができる。 *実行例 [#d59e9259] 豊田秀樹(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) #ref(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 ... *リンク [#o6676f75] -[[R-Wiki:http://rwiki.sciviews.org/doku.php?id=packages:cran:ltm]] サンプル多数 -[[項目反応理論[入門編](第2版):http://www.asakura.co.jp/books/isbn/978-4-254-12795-9/]] -[[Item Response Theory: Developing Your Intuition:http://joelcadwell.blogspot.jp/2012/09/item-response-theory-developing-your.html]] *ログ [#f66ee726] アクセス数: &counter; 人 ---- *コメント [#zb45ca49] - 実行例等々、順次更新していく予定です。分かる人があれば追加・編集してください。 -- [[Kosugitti]] &new{2008-11-27 (木) 11:19:02}; - 豊田(2002)ではBILOG-MGで推定しているようですが、どうもRの結果とマッチしません?? -- [[Kosugitti]] &new{2008-11-28 (金) 18:29:03}; - 識別力は、0.574×1.702では? -- [[oyoyo]] &new{2008-12-01 (月) 17:51:10}; - たしかにD=1.0で推定されているようです。服部先生のAPLEで係数を算出したところ、D=1.0の係数とほぼ一致しました。1.7で割ればいいんですね、ご指導ありがとうございました!。 -- [[Kosugitti]] &new{2008-12-01 (月) 18:14:34}; - 細かいことですがV22が抜けているのでは? -- &new{2008-12-02 (火) 14:32:21}; - 抜けてました!訂正しました。ご指摘ありがとうございます。 -- [[Kosugitti]] &new{2008-12-12 (金) 09:38:49}; - 因子得点の結果のところの, Obs,Exp, z1,se.z1の4つが何かわかりません。よかったら教えてください -- [[tetetete]] &new{2009-01-21 (水) 13:40:58}; - Obsは観測度数、EXPは観測度数の期待値、z1は推定されたスコア、se.z1は推定されたスコアの標準誤差です。 -- [[Kosugitti]] &new{2009-01-29 (木) 15:28:09}; - ありがとうございました!広島から参考にさせてもらいました -- [[tetetete]] &new{2009-01-31 (土) 21:43:20}; - http://irtanalysis.main.jp/にて,RとBILOG-MGとEasyEstimationの比較記事を掲載してみました。 -- [[irtanalysis]] &new{2009-04-14 (火) 16:53:43}; - 2012年9月に豊田(2002)をRで書きなおした本を第2版として出版します。 -- [[豊田秀樹]] &new{2012-07-09 (月) 07:47:45}; - tpmにcの値は指定できないのでしょうか?5択の問題に使いたいのでc=0.2にしたいです.よろしくお願いします. -- [[tako]] &new{2012-07-10 (火) 12:05:17}; - パラメタの指定はcontraintオプションでできますよ。ヘルプ参照。 -- [[Kosugitti]] &new{2012-07-18 (水) 09:49:24}; - 項目の困難度、識別力の標準誤差の算出方法をご存知の方いらっしゃいますか? -- [[TT]] &new{2014-01-17 (金) 14:38:18}; - 推定の方法は何を使っていますか? -- [[fuku]] &new{2019-06-18 (火) 10:46:20}; - 推定の方法は何を使っていますか? -- [[fuku]] &new{2019-06-18 (火) 10:57:39}; - 推定の方法は何を使っていますか? -- [[fuku]] &new{2019-06-18 (火) 10:57:41}; - theta値の推定のことですかね?デフォルトはEB(経験ベイズ)なので,経験的に求めた事後分布の平均と分散を利用したEAPだと思います。たぶんMAPのアルゴリズムは搭載されていないかと。 -- [[takuizum]] &new{2019-07-08 (月) 16:57:34}; - 識別力は結局1.7で割るんですか?1.7をかけるんですか? -- [[fuku]] &new{2019-08-12 (月) 20:55:14}; - パッケージの一覧からItmが消えているでしょうか?パッケージからの見つけ方などご教授いただけますと幸いです。 -- [[yu]] &new{2021-04-28 (水) 19:19:08}; - Itm(アイティーエム)ではなくltm(エルティーエム、全て小文字)ではないでしょうか -- [[Rユーザー]] &new{2021-05-01 (土) 15:10:21}; #comment
タイムスタンプを変更しない
COLOR(red){SIZE(30){Rで項目反応理論}} #contents *パッケージ [#s5504cb5] -[[ltm(潜在特性モデル)パッケージ中のオブジェクト一覧]] 次のパッケージにも助けてもらっている。 --MASS --msm --mvtnorm --polycor ->[[polycorパッケージによる順序相関係数の算出]] --sfsmisc *使用方法 [#hcb69bb5] **パッケージのロード [#t88cbb2c] library(ltm) このコマンドで、自動的に要求される他パッケージもロードされる。 **polychoric相関係数などで一次元性の確認 [#s4322182] **1母数モデル [#i897802c] rasch(data) **2母数モデル [#pd300b47] ltm(data~z1) **3母数モデル [#aa6d4336] tpm(data) **段階反応モデル [#k11f7fbc] grm(data) **ICCのプロット [#w7df02de] result <- rasch(data)、のように結果をresultオブジェクトに渡したとして、 ***1母数モデルの場合 [#r57894c9] plot.rasch(result) ***2母数モデルの場合 [#t2d9151e] plot.ltm(result) ***3母数モデルの場合 [#r776aee6] plot.tpm(result) **IIC/TICのプロット [#h231df5b] ***IICの場合 [#a9c89d6e] plot(result, type = "IIC") とくにある変数について描画したい場合は、itemsで指定する。 plot(result, type= "IIC", items=1) 上の例は、一番目の変数についてのIICを描画する。複数の変数を合わせて描画する際は、 plot(result, type="IIC", items=c(1, 2)) のようにする。 ***TICの場合 [#z362f42e] TICは全ての変数についてのIICの総和である。描画については、itemsオプションを0に指定すればよい。 plot(result, type="IIC", items=0) **スコアの算出 [#zee51667] ltm関数などで推定したパラメタをもちいて、能力値を推定するには、factor.scores()関数を使う。 result <- ltm(data ~ z1, IRT.param=TRUE) factor.scores(result) このようにすると、観測された全ての反応パターンについての能力値が算出される。推定方法はmethodオプションで、ベイズ、EAP、MIから選択できる。 回答者毎の能力値が必要な場合は、resp.patternオプションで反応パターンデータを引き渡す。 factor.scores(result, resp.pattern=data) これで一人ずつの能力値を得ることができる。 *実行例 [#d59e9259] 豊田秀樹(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) #ref(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 ... *リンク [#o6676f75] -[[R-Wiki:http://rwiki.sciviews.org/doku.php?id=packages:cran:ltm]] サンプル多数 -[[項目反応理論[入門編](第2版):http://www.asakura.co.jp/books/isbn/978-4-254-12795-9/]] -[[Item Response Theory: Developing Your Intuition:http://joelcadwell.blogspot.jp/2012/09/item-response-theory-developing-your.html]] *ログ [#f66ee726] アクセス数: &counter; 人 ---- *コメント [#zb45ca49] - 実行例等々、順次更新していく予定です。分かる人があれば追加・編集してください。 -- [[Kosugitti]] &new{2008-11-27 (木) 11:19:02}; - 豊田(2002)ではBILOG-MGで推定しているようですが、どうもRの結果とマッチしません?? -- [[Kosugitti]] &new{2008-11-28 (金) 18:29:03}; - 識別力は、0.574×1.702では? -- [[oyoyo]] &new{2008-12-01 (月) 17:51:10}; - たしかにD=1.0で推定されているようです。服部先生のAPLEで係数を算出したところ、D=1.0の係数とほぼ一致しました。1.7で割ればいいんですね、ご指導ありがとうございました!。 -- [[Kosugitti]] &new{2008-12-01 (月) 18:14:34}; - 細かいことですがV22が抜けているのでは? -- &new{2008-12-02 (火) 14:32:21}; - 抜けてました!訂正しました。ご指摘ありがとうございます。 -- [[Kosugitti]] &new{2008-12-12 (金) 09:38:49}; - 因子得点の結果のところの, Obs,Exp, z1,se.z1の4つが何かわかりません。よかったら教えてください -- [[tetetete]] &new{2009-01-21 (水) 13:40:58}; - Obsは観測度数、EXPは観測度数の期待値、z1は推定されたスコア、se.z1は推定されたスコアの標準誤差です。 -- [[Kosugitti]] &new{2009-01-29 (木) 15:28:09}; - ありがとうございました!広島から参考にさせてもらいました -- [[tetetete]] &new{2009-01-31 (土) 21:43:20}; - http://irtanalysis.main.jp/にて,RとBILOG-MGとEasyEstimationの比較記事を掲載してみました。 -- [[irtanalysis]] &new{2009-04-14 (火) 16:53:43}; - 2012年9月に豊田(2002)をRで書きなおした本を第2版として出版します。 -- [[豊田秀樹]] &new{2012-07-09 (月) 07:47:45}; - tpmにcの値は指定できないのでしょうか?5択の問題に使いたいのでc=0.2にしたいです.よろしくお願いします. -- [[tako]] &new{2012-07-10 (火) 12:05:17}; - パラメタの指定はcontraintオプションでできますよ。ヘルプ参照。 -- [[Kosugitti]] &new{2012-07-18 (水) 09:49:24}; - 項目の困難度、識別力の標準誤差の算出方法をご存知の方いらっしゃいますか? -- [[TT]] &new{2014-01-17 (金) 14:38:18}; - 推定の方法は何を使っていますか? -- [[fuku]] &new{2019-06-18 (火) 10:46:20}; - 推定の方法は何を使っていますか? -- [[fuku]] &new{2019-06-18 (火) 10:57:39}; - 推定の方法は何を使っていますか? -- [[fuku]] &new{2019-06-18 (火) 10:57:41}; - theta値の推定のことですかね?デフォルトはEB(経験ベイズ)なので,経験的に求めた事後分布の平均と分散を利用したEAPだと思います。たぶんMAPのアルゴリズムは搭載されていないかと。 -- [[takuizum]] &new{2019-07-08 (月) 16:57:34}; - 識別力は結局1.7で割るんですか?1.7をかけるんですか? -- [[fuku]] &new{2019-08-12 (月) 20:55:14}; - パッケージの一覧からItmが消えているでしょうか?パッケージからの見つけ方などご教授いただけますと幸いです。 -- [[yu]] &new{2021-04-28 (水) 19:19:08}; - Itm(アイティーエム)ではなくltm(エルティーエム、全て小文字)ではないでしょうか -- [[Rユーザー]] &new{2021-05-01 (土) 15:10:21}; #comment
テキスト整形のルールを表示する
添付ファイル:
ltmIcc.jpg
1560件
[
詳細
]
ltmIcc.png
3849件
[
詳細
]