LoginSignup
1
0

More than 1 year has passed since last update.

項目反応理論 項目母数の推定誤差

Posted at

目的

以前、2PLの母数の推定するためのEMアルゴリズムは実装していたのですが
Rとの比較はしていなかったので、備忘録として記録しておきます。

使用するデータ

使用するデータは豊田先生の書籍である項目反応理論[入門編]から、学力テスト1を使用しています。
また項目のいくつかは、書籍の手順に則り、削除しています。
その上で残った30個の項目を自作の関数(Python)とRのltmパッケージにより、識別力と困難度を推定し値を比較します。

Pythonの実行結果

pythonで推定する際に作成した関数
Rで推定する際に使用した関数

項目 python_推定値a R_推定値a python_推定値b R_推定値b
項目2 0.45 0.448 -1.465 -1.47
項目6 0.319 0.317 -1.7 -1.711
項目7 0.658 0.654 -1.954 -1.965
項目8 0.634 0.633 -1.694 -1.698
項目11 0.372 0.37 -0.687 -0.691
項目12 0.624 0.621 -1.443 -1.449
項目14 0.822 0.813 -1.518 -1.53
項目15 0.558 0.556 0.599 0.6
項目16 0.834 0.828 -1.561 -1.57
項目17 0.491 0.486 -1.491 -1.503
項目18 0.46 0.454 -1.635 -1.655
項目19 1.254 1.239 -1.532 -1.544
項目20 0.914 0.908 -1.751 -1.762
項目21 0.616 0.61 -0.895 -0.902
項目22 0.662 0.66 -0.899 -0.902
項目23 0.715 0.711 -0.226 -0.227
項目24 0.657 0.654 0.365 0.365
項目25 0.572 0.57 0.849 0.851
項目26 0.564 0.561 -1.181 -1.187
項目29 0.387 0.385 0.2 0.199
項目30 0.739 0.733 -0.522 -0.526
項目32 0.709 0.702 -0.819 -0.826
項目33 0.845 0.84 -0.091 -0.092
項目34 0.504 0.501 -0.155 -0.157
項目35 0.608 0.603 -2.027 -2.041
項目38 0.407 0.404 1.877 1.888
項目40 0.648 0.646 0.493 0.494
項目44 0.335 0.333 0.532 0.535
項目46 0.622 0.618 0.776 0.779
項目49 0.584 0.581 -0.928 -0.932

結果の考察

比較した結果、どの推定値も差はないように思える。
このことからも、推定の方法については、正しいと言えるだろう。

差はほどんどないが、推定の精度としては、どうなのか。
これを確認するために、推定値の標準偏差を比較してみる。

推定値の標準偏差

項目 python_a R_a python_b R_b
項目2 0.204 0.106 0.343 0.384
項目6 0.182 0.095 0.525 0.584
項目7 0.292 0.149 0.354 0.412
項目8 0.267 0.135 0.303 0.351
項目11 0.177 0.092 0.264 0.285
項目12 0.25 0.126 0.258 0.3
項目14 0.316 0.156 0.22 0.266
項目15 0.202 0.102 0.178 0.199
項目16 0.325 0.16 0.225 0.272
項目17 0.216 0.111 0.324 0.369
項目18 0.212 0.11 0.373 0.427
項目19 0.496 0.233 0.165 0.216
項目20 0.378 0.185 0.245 0.297
項目21 0.225 0.113 0.185 0.213
項目22 0.239 0.118 0.174 0.202
項目23 0.234 0.114 0.126 0.145
項目24 0.222 0.108 0.143 0.162
項目25 0.209 0.104 0.196 0.222
項目26 0.223 0.113 0.237 0.271
項目29 0.174 0.09 0.217 0.229
項目30 0.245 0.119 0.132 0.155
項目32 0.248 0.121 0.157 0.185
項目33 0.266 0.125 0.109 0.13
項目34 0.195 0.098 0.168 0.183
項目35 0.279 0.142 0.392 0.454
項目38 0.194 0.101 0.455 0.512
項目40 0.218 0.108 0.151 0.171
項目44 0.167 0.087 0.274 0.292
項目46 0.215 0.108 0.176 0.201
項目49 0.22 0.111 0.197 0.225

標準偏差の考察

識別力aの推定の精度は、Rの方が良いが、
一方で、困難度bについては、自作したpythonの方がいいことがわかる。

自作関数の確認については、書籍と比較してあるので、ある程度は保証できると思うが
今回Rの出力結果を自作関数を使い出力したところ、これは一致しているとは言えなかった。

考えられパターンとしては、

  1. 単純に計算のミス
  2. Rが情報行列とは別の方法で推定している

自作の方は何回か確認しているので、計算ミスがないことを祈りたいが
Rの推定方法については、勉強不足で、まだわかっていない(ご存知の方がいれば、ご教授いただけると。。)

まとめ

EMアルゴリズムでパラメータの推定を実装し、その確認のため、Rと比較しある程度は保証できそう。
推定値の精度については、ほとんどは0.2~0.3なので、良いと言えるのではないだろうか。
しかし計算方法の違いが発見されたので、この辺りはもう少し掘っていきたいところ。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0