LoginSignup
2
1

More than 1 year has passed since last update.

Rによる項目反応理論を実装してみたーー項目特性曲線(2PLM)

Last updated at Posted at 2022-12-11

はじめに

この記事は基本概念から項目特性曲線(2PLM)の実装までをまとめた内容です。項目反応理論はあまり内容が深いので、今回はイメージできたら幸いです。違っている点などがあればご指摘お願いします。

基本概念

Wikipediaによると、評価項目群への応答に基づいて、被験者の特性(認識能力、物理的能力、技術、知識、態度、人格特徴等)や、評価項目の難易度・識別力を測定するための試験理論である。

簡単に言うと、項目(問題)に対する受験者の回答(正誤)のデータを見ることで、その設問の難易度が高いのか低いのか、また能力の高い、低いを適切に識別できる問題かどうかが分かり、それにより受験者の能力も正しく評価できる、という考え方である。

IRTを使用している主なテスト

カテゴリー
民間英語試験 TOEIC・TOEFL・GTEC・CASEC
学力調査試験 PISA・TIMSS・NAEP
心理尺度の作成・評価 性格判定、購買力尺度、進取的行動尺度

項目反応理論の基本(良いところ)

テストを運用する際がよく直面する問題は、例えば、ある学校の今年度試験の平均点が昨年の平均点より伸びたため、その学校の生徒たちの学力が平均的に高くなったと考えられるか?

実はそうではなく、今年度のテストが簡単になっただけかもしれないし、仮に難易度が同じあったとしても、受験を受けた学生たちの集団も異なった可能性がありえる。このような問題は、該当のテスト項目や受験者集団の性質に依存したものとなる。

そこで、IRTでは、テスト・尺度を受けた集団や問題(項目)に直接的に依存しない評価が可能。

それを実現するために、項目反応モデルと呼ばれる数理モデルと、等化と呼ばれる手続きである。

項目反応モデル

項目反応モデルとは、個人の能力・適性・態度等の直接観測できない潜在特性値をモデルに組み込み、ある**潜在特性値θ**を示す個人がある項目(問題)に正答する確率を表現。
よくある項目反応モデル
1 ロジスティック・モデル(logistic model)
2 正規累積モデル(normal ogive model)
3 ラッシュモデル(Rasch model)
4 段階反応モデル(graded response model)
5 部分的反応モデル(partial credit model)
6 名義反応モデル(nominal response model)
7 連続的反応モデル(continuous response model)
8 拡張ロジスティックモデル(generalized logistic model)
9 一般正規累積モデル(general normal-ogive model)

色々モデルがあるが、一般的には、ロジスティクス・モデル(項目特性曲線)が使われる。
ロジスティクス・モデルで扱うパラメータ:
1.識別力(a):受験者の特性値(能力)の違いが正答率にどの程度反映するか。
2.困難度(b):大きいほどテスト項目が難しい問題である。
3.当て推量(c):受験者が偶然正答する確率。

項目特性曲線(Item Characteristic Curve:ICC)

項目特性曲線 (item characteristic curve:ICC)とは、項目反応理論において各項目ごとに推定される曲線である。x軸は測定する特性値、y軸にはその特性を持っている場合に各項目が正答となる確率(正答率)となる。

ICCは、困難度(正当となるにはどのくらい高い特性値が必要か)と識別力(項目はどの程度の特性値を識別することに長けているか)という2つのパラメータを持つ。

図1が示すグラフは、項目の識別力(a)困難度(b)によってテスト項目の正答確率を表現しようとするモデル。横軸は受験者の能力値(θ)、縦軸は該当項目の正答率となる。横軸の能力値(θ)が増加するにつれて、縦軸の正答確率が向上することを表現している。識別力(a)と困難度(b)の分離することによって、テスト項目や受験者集団に依存する問題を克服することができる。

スクリーンショット 2022-12-05 115517.png

項目特性曲線(2PLM)の実装

2PLMの場合は、
68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f36323230322f62323337363139612d336465622d346639632d666163662d3564616135343135623735612e706e67.png(1)
a=識別度、b=困難度、c=0、D=1.7(定数)、j=項目番号、θ=受験者能力、exp=指数関数で求めることができる。

一般的には、以下のようなグラフとなる。
417cf9f0-ec2e-4250-9b69-e2f16126e3d6.png

実装

データはここからダウンロードして、"testeg.csv"を読み込む。
IRT.R
#データの読み込み
data <-read.csv("testeg.csv")

#項目反応パン行列
dim(data)
#20 11

#正答者数n_j
apply(data[,2:11],2,sum)
# q1  q2  q3  q4  q5  q6  q7  q8  q9 q10 
# 13  17  13  12  18  16  15   8   4  15 

#項目特性値
library(ltm)
descript(data[,2:11])

これによって、困難度(b)と識別力(a)を求めることができた。

スクリーンショット 2022-12-05 153652.png

求めたい項目特性曲線の困難度(b)と識別力(a)を方程式(1)に代入し、項目特性曲線(2PLM)を生成しましょう。以下はコードです(c=0、D=1.7(定数)。

IRT.R
#項目1
# a = 0.6278, b = 0.65 , c = 0.0
curve((1 + 0)/(1 + exp(-1.7*0.6278*(x-0.65))), -3, 3, col = "black", lty = 1, ylab = "正答率") 

#項目2
# a = 0.4027, b = 0.85, c = 0.0
curve((1 + 0)/(1 + exp(-1.7*0.4027*(x-0.85))), -3, 3, col = "red", lty = 2, add = TRUE)

#項目5
# a = 0.3676, b = 0.90, c = 0.0
curve((1 + 0)/(1 + exp(-1.7*0.3676*(x-0.90))), -3, 3, col = "blue", lty = 3, add = TRUE) 

#凡例を生成
legend("topleft", 
       legend = c("Q1:a = 0.6278, b = 0.65, c = 0.0", "Q2:a = 0.4027, b = 0.85, c = 0.0", "Q5:a = 0.3676, b = 0.90, c = 0.0"), 
       col = c("black", "red", "blue"),
       lty = 1:4, cex = 1.0)

上記のコードを実装すれば、下記のような項目特性曲線(2PLM)が生成された。

Rplot.jpeg

解説

グラフからわかったのは、

1、横軸は受験者の能力値(x)、縦軸は該当項目の正答率となり、横軸の能力値(x)が増加するにつれて、縦軸の正答確率が向上することを表現している。

2、同じ能力を持つ受験者において、項目の難易度順がQ5>Q2>Q1となる。

3、仮に同じ回答率60%を達成する場合、項目Q1に応じる能力が1.1、項目Q2に応じる能力が1.5、項目Q5に応じる能力が1.7である。

スクリーンショット 2022-12-05 160420.png

さいごに

いかがでしょうか。 Rで実装するのはシンプルだが、理論を理解するのは時間がかかる。今回はほんの一部を書いてみたが、余裕があったら、記事編集して充実させたいと思う。

参考文献

(1)項目反応理論とは:https://ja.wikipedia.org/wiki/項目応答理論
(2)項目特性曲線 (item characteristic curve:ICC)とは:https://clover.fcg.world/2016/06/28/5621/
(3)加藤健太郎,川端一光,山田剛史(2014年)「Rによる項目反応理論」 株式会社 オーム社

2
1
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
2
1