IRT中的测试特征曲线和信息函数

2

一、IRT测试特征曲线(The Test Characteristic Curve)

在对测试进行评分时,考生对每个项目的回答都会进行二分法评分,正确得 1 分,错误得 0 分,将各项目得分相加得到原始分。对于这种二元计分的测试,原始分数的范围是从 0 到 ​J的整数,其中 ​J 是测试中的项目数。
若考生再次参加考试,假定他们不记得之前如何回答了这些题目,将会获得一个不同的原始分。现假设一个考生可以多次参加考试并获得各种考试成绩,这些分数会集中在某个平均值附近。在测量理论中,这个值被称为真实分数(true score),其定义取决于特定的测量理论。
在IRT中,采用D.N. Lawley 定义的真实分数。

1、真实分数(A True Score)

IRT中,真是分数​TS_i为:

\mathrm{TS}_{i}=\sum_{j=1}^{J} P_{j}\left(\theta_{i}\right)

其中,​TS_i为能力水平为​\theta_{i}的考生的真实分数,​j为项目编号,​J=1,2..., ​P_{j}(\theta_{i})取决于所采用的ICC模型。

2、测试特征曲线

根据真实分数的定义,可以计算能力范围内的任何点的真实分数。以能力值为横坐标,真实分数为纵坐标,即可绘制测试特征曲线。
测验特征曲线表示的是真实分数与能力间的关系。给定任何能力水平,可以通过测试特征曲线找到相应的真实分数。

28810789a4f58ee7446a8479f175f624.png
图 测试特性曲线(包含4个测试项目:Item1: ​a_{1}=0.5, b_{1}=-1.0; Item2: ​a_{2}=1.2, b_{2}=0.75; Item3: ​a_{3}=0.8, b_{3}=0.0; Item4: ​a_{4}=1.0, b_{4}=0.5)

​J个项目的测试中,若每个项目采用Rasch 模型或双参数模型,测试曲线随着能力值趋于负无穷,左尾接近于零,随着能力值接近正无穷,上尾接近测试中的项目数​J。即真实分数为零对应能力值为负无穷大,真实分数为 ​J 对应于能力水平为正无穷大。
使用三参数模型时,测验特征曲线的下尾趋近于测验项目的猜测参数之和,即能力非常低的考生可以通过猜测获得大于零的分数。此时曲线上尾仍接近测试中的项目数​J

在IRT中,测试特征曲线的提供了一种将能力分数转换为真实分数的方法。将能力分数转换为真实分数,便于进行解释。同时,测试特性曲线在等同测试(equating tests)也有重要作用。

测试特征曲线没有明确的公式,因此无明确的参数,画此曲线的方法是使用给定的ICC模型评估测试中所有项目在每个能力水平上正确响应的概率,再将它们在每个能力水平上求和,绘制测试特征曲线。
曲线的解释方式与ICC类似。此外,同ICC一样,测试特征曲线不取决于考生能力值在能力量表上的频率分布,两者都是两个量表之间的函数关系。

3、R语言示例:测试特征曲线

tcc <- function(b, a, c) {
  J <- length(b)
  if (missing(c)) c <- rep(0, J)
  if (missing(a)) a <- rep(1, J)
  theta <- seq(-3, 3, .1)
  ts <- rep(0, length(theta))
  for (j in 1:J) {
    P <- c[j] + (1 - c[j]) / (1 + exp(-a[j]*(theta-b[j])))
    ts <- ts + P
  }
  plot(theta, ts, type="l", xlim=c(-3,3), ylim=c(0,J),
       xlab="Ability", ylab="True Score",
       main="Test Characteristic Curve")
}

b <- c(-2.0, -1.0, 0.0, 1.0, 2.0)
a <- c(0.5, 0.75, 1.0, 0.75, 0.5)
c <- c(.2, .2, .2, .2, .2)

tcc(b=b)
tcc(a=a, b=b)
tcc(a=a, b=b, c=c)

二、 IRT信息函数(The Information Function)

统计中信息可定义为估计参数的方差的倒数,估计参数的方差用 ​\sigma^{2} 表示,信息量 ​I=\frac{1}{\sigma^{2}}
在IRT中,当对考生能力参数进行估计时,给定能力水平​\hat{\theta}的信息量等于其方差的倒数。如果信息量大,说明可以准确估计出该考生的真实能力。计算不同能力水平下的信息量,可作信息函数图:
图1 信息函数
如图1示,在​-2< \theta<0的范围内,信息量大于3,该范围内的能力估计有一定的精度,范围外的信息量迅速减少,能力水平估计精度不高。

信息函数叶不依赖于考生在能力量表上的分布。一般在测试中,理想的信息函数是一条水平线,且位于某个较大的 ​I 值处,所有能力水平都将以相同的精度进行估计,但很难实现。一般情况下信息函数如上图所示,即不同能力水平的估计精度不同。

1、测试信息函数(Test Information Function)

测试中单个项目的信息量有限,包含多个项目的测试的信息量比单个项目信息量高很多,能更准确地衡量考生能力。一次测验中,所有单个项目的信息量总和即为测试信息量

I(\theta)=\sum_{j=1}^{J} I_{j}(\theta)

其中,​I(\theta) 是能力 ​\theta 水平下的测试信息量;
​I_j(\theta) 是能力 ​\theta 水平下的第 ​j 个项目的信息量。
1555b620a86f664d21fed04df2e1c8fd.png
图2 测试信息函数

测试信息函数反应测试对能力评估的准确性。单个项目产生的信息量相当小,测试信息量是主要关注点。由于测试信息量是在项目水平上定义的,项目信息量的数学定义取决于所采用的项目特征曲线模型。

信息量与能力估计的可变性之间存在相互关系。将信息量转化为估计的标准误差,只需取测试信息量的平方根的倒数:

\operatorname{SE}(\theta)=\frac{1}{\sqrt{I(\theta)}}

2、项目信息的定义

1. Rasch ICC模型

Rasch ICC模型下,项目信息函数定义为:

I_{j}(\theta)=P_{j}(\theta) Q_{j}(\theta)

2. 双参数ICC模型

双参ICC模型下,项目信息函数定义为:

I_{j}(\theta)=a_{j}^{2} P_{j}(\theta) Q_{j}(\theta)

其中,
​a_{j}为项目第​j个项目的项目区分度参数;
​P_{j}(\theta)=1 /\left[1+\exp \left(-L_{j}\right)\right],
​L_{j}=a_{j}\left(\theta-b_{j}\right),
​Q_{j}(\theta)=1-P_{j}(\theta), ​\theta为对应能力等级。

3. 三参数ICC模型

三参ICC模型下,项目信息函数定义为:

I_{j}(\theta)=a_{j}^{2}\left[\frac{Q_{j}(\theta)}{P_{j}(\theta)}\right]\left[\frac{\left(P_{j}(\theta)-c_{j}\right)^{2}}{\left(1-c_{j}\right)^{2}}\right]

其中, ​P_{j}(\theta)=c_{j}+\left(1-c_{j}\right) \times 1 /\left[1+\exp \left(-L_{j}\right)\right]

4 、R语言示例:测试信息函数

图2测试信息函数示例
假设一项测试包含10个项目,采用双参数ICC模型,项目参数已知。

b <- c(-0.4, -0.3, -0.2, -0.1, 0.0, 0.0, 0.1, 0.2, 0.3, 0.4)
a <- c(1.0, 1.5, 1.2, 1.3, 1.0, 1.6, 1.6, 1.4, 1.1, 1.7)  
theta <- seq(-3, 3, 0.1)
J <- length(b)
ii <- matrix(rep(0, length(theta)*J), nrow=length(theta))
i <- rep(0, length(theta))
for (j in 1:J) {
  P <- 1 / (1 + exp(-a[j] * (theta - b[j])))
  ii[,j] <- a[j]**2 * P * (1.0 - P)
  i <- i + ii[,j]
}
plot(theta, i, xlim=c(-3,3), ylim=c(0,10), type="l",
       xlab="Ability", ylab="Information",
       main="Test Information Function") # 图2