IRT中的测试特征曲线和信息函数
一、IRT测试特征曲线(The Test Characteristic Curve)
在对测试进行评分时,考生对每个项目的回答都会进行二分法评分,正确得 1 分,错误得 0 分,将各项目得分相加得到原始分。对于这种二元计分的测试,原始分数的范围是从 0 到 J的整数,其中 J 是测试中的项目数。
若考生再次参加考试,假定他们不记得之前如何回答了这些题目,将会获得一个不同的原始分。现假设一个考生可以多次参加考试并获得各种考试成绩,这些分数会集中在某个平均值附近。在测量理论中,这个值被称为真实分数(true score),其定义取决于特定的测量理论。
在IRT中,采用D.N. Lawley 定义的真实分数。
1、真实分数(A True Score)
IRT中,真是分数TS_i为:
其中,TS_i为能力水平为\theta_{i}的考生的真实分数,j为项目编号,J=1,2..., P_{j}(\theta_{i})取决于所采用的ICC模型。
2、测试特征曲线
根据真实分数的定义,可以计算能力范围内的任何点的真实分数。以能力值为横坐标,真实分数为纵坐标,即可绘制测试特征曲线。
测验特征曲线表示的是真实分数与能力间的关系。给定任何能力水平,可以通过测试特征曲线找到相应的真实分数。
图 测试特性曲线(包含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示,在-2< \theta<0的范围内,信息量大于3,该范围内的能力估计有一定的精度,范围外的信息量迅速减少,能力水平估计精度不高。
信息函数叶不依赖于考生在能力量表上的分布。一般在测试中,理想的信息函数是一条水平线,且位于某个较大的 I 值处,所有能力水平都将以相同的精度进行估计,但很难实现。一般情况下信息函数如上图所示,即不同能力水平的估计精度不同。
1、测试信息函数(Test Information Function)
测试中单个项目的信息量有限,包含多个项目的测试的信息量比单个项目信息量高很多,能更准确地衡量考生能力。一次测验中,所有单个项目的信息量总和即为测试信息量
其中,I(\theta) 是能力 \theta 水平下的测试信息量;
I_j(\theta) 是能力 \theta 水平下的第 j 个项目的信息量。
图2 测试信息函数
测试信息函数反应测试对能力评估的准确性。单个项目产生的信息量相当小,测试信息量是主要关注点。由于测试信息量是在项目水平上定义的,项目信息量的数学定义取决于所采用的项目特征曲线模型。
信息量与能力估计的可变性之间存在相互关系。将信息量转化为估计的标准误差,只需取测试信息量的平方根的倒数:
2、项目信息的定义
1. Rasch ICC模型
Rasch ICC模型下,项目信息函数定义为:
2. 双参数ICC模型
双参ICC模型下,项目信息函数定义为:
其中,
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模型下,项目信息函数定义为:
其中, 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