IRT模型估计-EM算法

article/2025/9/28 4:11:37

IRT模型中参数估计

IRT(Item Response Theory) 项目反应理论。是教育评估与心理测量理论中的重要模型。主要目的是通过被试(examinees) 的对于一套试题的反应(responses), 对被试 的能力(ability parameters) 参数 θ \theta θ 和题目(item parameters) 作出估计。由于被试的反应变量一般是离散变量,基本的是0-1反应变量,link 函数一般有probit和logit两种。例如,2pl, 2pno,3pl等。
而对于不同的反应模型,估计方法大致相同,总体来说分为两大体系。频率框架下是联合极大似然估计(Joint Maximum Likelihood Estimation, JMLE) 和边际极大似然(Marginal Maximum Likelihood Estimation, MMLE). Bayesian 框架下,常用估计方法有Gibbs算法、MCMC算法及其衍生估计方法。
下面要介绍的EM算法是基于logit link下的2pl模型进行EM估计。

2pl模型的EM估计

  1. 2pl模型
    2pl模型,全称是two parameter logistic model,实际上是logistics 回归中的一种。
    假设 i = 1 , 2 , … … , N i=1,2,……,N i=1,2,,N 个人作答了 j = 1 , 2 , … … , J j=1,2,……,J j=1,2,,J 个题目,相应的反应矩阵 Y = ( Y i j ) i = 1 , j = 1 N , J Y=(Y_{ij})_{i=1,j=1}^{N, J} Y=(Yij)i=1,j=1N,J 代表第 i i i 个人在作答第 j j j 题的反应,也就是说, Y i j = 1 Y_{ij}=1 Yij=1 代表答对了,否则代表没有答对,这里只考虑两值反应。假设人的能力参数 θ i \theta_{i} θi,项目参数集合 Ω = { a = ( a j ) j = 1 J , d = ( d j ) j = 1 J } \varOmega=\left\lbrace \boldsymbol{a}=(a_{j})_{j=1}^{J}, \boldsymbol{d}=(d_{j})_{j=1}^{J}\right\rbrace Ω={a=(aj)j=1J,d=(dj)j=1J}, 表示项目参数区分度a和难度参数的等价参数d。
    2pl模型的项目反应函数如下,
    L ( Y ; θ , a , d ) = ∏ i = 1 N ∏ j = 1 J P ( Y i j = 1 ; θ i , a j , d j ) Y i j P ( Y i j = 0 ; θ i , a j , d j ) 1 − Y i j L(Y;\boldsymbol{\theta}, \boldsymbol{a}, \boldsymbol{d})=\prod_{i=1}^{N} \prod_{j=1}^{J} P(Y_{ij}=1;\theta_{i}, a_{j}, d_{j})^{Y_{ij}}P(Y_{ij}=0;\theta_{i}, a_{j}, d_{j})^{1-Y_{ij}} L(Y;θ,a,d)=i=1Nj=1JP(Yij=1;θi,aj,dj)YijP(Yij=0;θi,aj,dj)1Yij
    其中,
    P ( Y i j = 1 ; θ i , a j , d j ) = e x p ( a j θ i + d j ) 1 + e x p ( a j θ i + d j ) P(Y_{ij}=1;\theta_{i}, a_{j}, d_{j})=\frac{exp(a_{j}\theta_{i}+d_{j})}{1+exp(a_{j}\theta_{i}+d_{j})} P(Yij=1;θi,aj,dj)=1+exp(ajθi+dj)exp(ajθi+dj)
    Note, 这个似然也可以写成是
    L ( Y ; θ , a , d ) = ∏ i = 1 N ∏ j = 1 J e x p ( y i j ( a j θ i + d j ) ) 1 + e x p ( a j θ i + d j ) L(Y;\boldsymbol{\theta}, \boldsymbol{a}, \boldsymbol{d})=\prod_{i=1}^{N} \prod_{j=1}^{J}\frac{exp(y_{ij}(a_{j}\theta_{i}+d_{j}))}{1+exp(a_{j}\theta_{i}+d_{j})} L(Y;θ,a,d)=i=1Nj=1J1+exp(ajθi+dj)exp(yij(ajθi+dj))

  2. EM估计具体计算过程
    EM算法,也叫边际极大似然估计,marginal maximum likelihood estimation。基本想法就是把潜在变量(latent variable) θ \theta θ 积分掉之后的边际似然函数,求极大似然估计。
    2pl的对数边际似然函数为,
    l o g L ( Y ; a , d ) = l o g ∫ θ L ( Y ; θ , a , d ) g ( θ ) d θ logL(Y;\boldsymbol{a}, \boldsymbol{d})=log\int _{\boldsymbol{\theta}}L(Y;\boldsymbol{\theta}, \boldsymbol{a}, \boldsymbol{d})g(\boldsymbol{\theta})d\boldsymbol{\theta} logL(Y;a,d)=logθL(Y;θ,a,d)g(θ)dθ
    = ∑ i = 1 N l o g ∫ ∏ j = 1 J e x p ( y i j ( a j θ i + d j ) ) 1 + e x p ( a j θ i + d j ) g ( θ i ) d θ i =\sum_{i=1}^{N}log\int\prod_{j=1}^{J}\frac{exp(y_{ij}(a_{j}\theta_{i}+d_{j}))}{1+exp(a_{j}\theta_{i}+d_{j})}g(\theta_{i})d\theta_{i} =i=1Nlogj=1J1+exp(ajθi+dj)exp(yij(ajθi+dj))g(θi)dθi
    其中 g ( θ ) g(\boldsymbol{\theta}) g(θ) 是能力参数 θ \boldsymbol{\theta} θ 的先验分布。目标是,求 ( a ^ , d ^ ) = a r g m a x { l o g L ( Y ; a , d ) } . (\widehat \boldsymbol{a}, \widehat \boldsymbol{d})=argmax \left\lbrace logL(Y;\boldsymbol{a}, \boldsymbol{d})\right\rbrace. (a ,d )=argmax{logL(Y;a,d)}.对于这种最优化问题,一般常用的方法常用的方法有Newton,GD等方法。Newton方法是需要解方程 0 = ∂ l o g L ( Y ; a , d ) ∂ a j 0=\frac{\partial logL(Y;\boldsymbol{a}, \boldsymbol{d})}{\partial a_{j}} 0=ajlogL(Y;a,d),除了一阶导数之外,还需要再求二阶导数。GD,梯度下降方法,只需要一阶导数,具体原理见下面wiki百科。
    综上,一阶导数是必须要求的,然后上面的式子对 a j a_{j} aj求一阶偏导,
    ∂ l o g L ( Y ; a , d ) ∂ a j = ∂ ∂ a j l o g ∫ θ L ( Y ; θ , a , d ) g ( θ ) d θ \frac{\partial logL(Y;\boldsymbol{a}, \boldsymbol{d})}{\partial a_{j}}=\frac{\partial}{\partial a_{j}}log \int _{\boldsymbol{\theta}}L(Y;\boldsymbol{\theta}, \boldsymbol{a}, \boldsymbol{d})g(\boldsymbol{\theta})d\boldsymbol{\theta} ajlogL(Y;a,d)=ajlogθL(Y;θ,a,d)g(θ)dθ

= 1 ∫ θ L ( Y ; θ , a , d ) g ( θ ) d θ ∫ θ ∂ ∂ a j L ( Y ; θ , a , d ) g ( θ ) d θ =\frac{1}{\int _{\boldsymbol{\theta}}L(Y;\boldsymbol{\theta}, \boldsymbol{a}, \boldsymbol{d})g(\boldsymbol{\theta})d\boldsymbol{\theta}}\int _{\boldsymbol{\theta}}\frac{\partial}{\partial a_{j}}L(Y;\boldsymbol{\theta}, \boldsymbol{a}, \boldsymbol{d})g(\boldsymbol{\theta})d\boldsymbol{\theta} =θL(Y;θ,a,d)g(θ)dθ1θajL(Y;θ,a,d)g(θ)dθ
= ∫ θ L ( Y ; θ , a , d ) g ( θ ) ∫ θ L ( Y ; θ , a , d ) g ( θ ) d θ ∂ ∂ a j l o g L ( Y ; θ , a , d ) d θ , = \int_{\boldsymbol{\theta}} \frac{L(Y;\boldsymbol{\theta}, \boldsymbol{a}, \boldsymbol{d})g(\boldsymbol{\theta})}{\int _{\boldsymbol{\theta}}L(Y;\boldsymbol{\theta}, \boldsymbol{a}, \boldsymbol{d})g(\boldsymbol{\theta})d\boldsymbol{\theta}}\frac{\partial}{\partial a_{j}}logL(Y;\boldsymbol{\theta}, \boldsymbol{a}, \boldsymbol{d})d\boldsymbol{\theta}, =θθL(Y;θ,a,d)g(θ)dθL(Y;θ,a,d)g(θ)ajlogL(Y;θ,a,d)dθ,
= ∑ i = 1 N ∫ θ i ( y i j − e x p ( a j θ i + d j ) 1 + e x p ( a j θ i + d j ) ) θ i P ( θ i ∣ Y i . , a , d ) d θ i . =\sum_{i=1}^{N}\int_{\theta_{i}} (y_{ij}-\frac{exp(a_{j}\theta_{i}+d_{j})}{1+exp(a_{j}\theta_{i}+d_{j})})\theta_{i}P(\theta_{i}|Y_{i.},\boldsymbol{a},\boldsymbol{d})d{\theta_{i}}. =i=1Nθi(yij1+exp(ajθi+dj)exp(ajθi+dj))θiP(θiYi.,a,d)dθi.
因为 L ( Y ; θ , a , d ) g ( θ ) ∫ θ L ( Y ; θ , a , d ) g ( θ ) d θ = P ( θ ∣ Y , a , d ) \frac{L(Y;\boldsymbol{\theta}, \boldsymbol{a}, \boldsymbol{d})g(\theta)}{\int _{\boldsymbol{\theta}}L(Y;\boldsymbol{\theta}, \boldsymbol{a}, \boldsymbol{d})g(\theta)d\boldsymbol{\theta}}=P(\boldsymbol{\theta}|Y,\boldsymbol{a},\boldsymbol{d}) θL(Y;θ,a,d)g(θ)dθL(Y;θ,a,d)g(θ)=P(θY,a,d) θ \theta θ的联合后验分布,同时
∂ ∂ a j l o g L ( Y ; θ , a , d ) = ∂ ∂ a j ∑ i = 1 N ∑ j = 1 J y i j ( a j θ i + d j ) − l o g ( 1 + e x p ( a j θ i + d j ) ) \frac{\partial}{\partial a_{j}}logL(Y;\boldsymbol{\theta}, \boldsymbol{a}, \boldsymbol{d})=\frac{\partial}{\partial a_{j}}\sum_{i=1}^{N}\sum_{j=1}^{J}y_{ij}(a_{j}\theta_{i}+d_{j})-log(1+exp(a_{j}\theta_{i}+d_{j})) ajlogL(Y;θ,a,d)=aji=1Nj=1Jyij(ajθi+dj)log(1+exp(ajθi+dj))

= ∑ i = 1 N ( y i j − e x p ( a j θ i + d j ) 1 + e x p ( a j θ i + d j ) ) θ i . =\sum_{i=1}^{N}(y_{ij}-\frac{exp(a_{j}\theta_{i}+d_{j})}{1+exp(a_{j}\theta_{i}+d_{j})})\theta_{i}. =i=1N(yij1+exp(ajθi+dj)exp(ajθi+dj))θi.
但是实际上,由于积分对于计算机来说是很庞大的计算量,所以在计算过程中,一般使用有限的节点的离散分布来逼近这个连续积分。具体做法如下,对所有人的 θ i \theta_{i} θi取区间[-4,4] 内的节点 X i k , k = 1 , 2 , … … , q X_{ik}, k=1,2,……,q Xik,k=1,2,,q。假设先验密度服从标准正态分布,对于第 i i i个人的后验密度函数为,
P ( θ i = X i k ∣ Y i . , a , d ) = e x p ( ∑ j = 1 J y i j ( a j X i k + d j ) − X i k 2 2 ) ∏ j = 1 J ( 1 + e x p ( a j X i k + d j ) ) ∑ k = 1 q e x p ( ∑ j = 1 J y i j ( a j X i k + d j ) − X i k 2 2 ) ∏ j = 1 J ( 1 + e x p ( a j X i k + d j ) ) . P(\theta_{i}=X_{ik}|Y_{i.},\boldsymbol{a},\boldsymbol{d})=\frac{\frac{exp(\sum_{j=1}^{J}y_{ij}(a_{j}X_{ik}+d_{j})-\frac{X_{ik}^{2}}{2})}{\prod_{j=1}^{J}(1+exp(a_{j}X_{ik}+d_{j}))}}{\sum_{k=1}^{q}\frac{exp(\sum_{j=1}^{J}y_{ij}(a_{j}X_{ik}+d_{j})-\frac{X_{ik}^{2}}{2})}{\prod_{j=1}^{J}(1+exp(a_{j}X_{ik}+d_{j}))}}. P(θi=XikYi.,a,d)=k=1qj=1J(1+exp(ajXik+dj))exp(j=1Jyij(ajXik+dj)2Xik2)j=1J(1+exp(ajXik+dj))exp(j=1Jyij(ajXik+dj)2Xik2).
从而,
∂ l o g L ( Y ; a , d ) ∂ a j = ∑ k = 1 q ∑ i = 1 N ( y i j − e x p ( a j X i k + d j ) 1 + e x p ( a j X i k + d j ) ) X i k P ( θ i = X i k ∣ Y i . , a , d ) . \frac{\partial logL(Y;\boldsymbol{a}, \boldsymbol{d})}{\partial a_{j}}=\sum_{k=1}^{q}\sum_{i=1}^{N}(y_{ij}-\frac{exp(a_{j}X_{ik}+d_{j})}{1+exp(a_{j}X_{ik}+d_{j})})X_{ik}P(\theta_{i}=X_{ik}|Y_{i.},\boldsymbol{a},\boldsymbol{d}). ajlogL(Y;a,d)=k=1qi=1N(yij1+exp(ajXik+dj)exp(ajXik+dj))XikP(θi=XikYi.,a,d).
以上这个方程就是在EM算法当中目标要求的边际似然函数,剩下的是利用最优化的方法来得到最优解。参数 d \boldsymbol{d} d 也是类似得到一阶导数。

  1. 具体的GD算法步骤如下,
    1,initial values ( a ( 0 ) , d ( 0 ) ) (\boldsymbol{a}^{(0)},\boldsymbol{d}^{(0)}) (a(0),d(0));
    2,posterior density P ( θ i = X i k ∣ Y i . , a , d ) P(\theta_{i}=X_{ik}|Y_{i.},\boldsymbol{a},\boldsymbol{d}) P(θi=XikYi.,a,d);
    3,gradient ∂ l o g L ( Y ; a , d ) ∂ a j ∣ ( a j ( 0 ) , d j ( 0 ) ) \frac{\partial logL(Y;\boldsymbol{a}, \boldsymbol{d})}{\partial a_{j}}|_{(a_{j}^{(0)},d_{j}^{(0)})} ajlogL(Y;a,d)(aj(0),dj(0)) and ∂ l o g L ( Y ; a , d ) ∂ d j ∣ ( a j ( 0 ) , d j ( 0 ) ) \frac{\partial logL(Y;\boldsymbol{a}, \boldsymbol{d})}{\partial d_{j}}|_{(a_{j}^{(0)},d_{j}^{(0)})} djlogL(Y;a,d)(aj(0),dj(0));
    4,update ( a j , d j ) (a_{j},d_{j}) (aj,dj) by
    a j ( 1 ) = a j ( 0 ) + s t e p s i z e ∗ ∂ l o g L ( Y ; a , d ) ∂ j ∣ ( a j ( 0 ) , d j ( 0 ) ) d j ( 1 ) = d j ( 0 ) + s t e p s i z e ∗ ∂ l o g L ( Y ; a , d ) ∂ d j ∣ ( a j ( 0 ) , d j ( 0 ) ) ; a_{j}^{(1)}=a_{j}^{(0)}+stepsize*\frac{\partial logL(Y;\boldsymbol{a}, \boldsymbol{d})}{\partial _{j}}|_{(a_{j}^{(0)},d_{j}^{(0)})}\\d_{j}^{(1)}=d_{j}^{(0)}+stepsize *\frac{\partial logL(Y;\boldsymbol{a}, \boldsymbol{d})}{\partial d_{j}}|_{(a_{j}^{(0)},d_{j}^{(0)})}; aj(1)=aj(0)+stepsizejlogL(Y;a,d)(aj(0),dj(0))dj(1)=dj(0)+stepsizedjlogL(Y;a,d)(aj(0),dj(0));
    5,repeat until the tolerance, that is, the difference of the k t h th th and (k+1) t h th th step is under some values or satisfying other criteriors.
  2. 模拟研究
  • 生成模拟数据
    假设 N = 2000 N=2000 N=2000, J = 20 J=20 J=20, a ∼ r u n i f ( J , 0 , 2 ) a\sim runif(J,0,2) arunif(J,0,2), d ∼ r u n i f ( J , − 1 , 1 ) d\sim runif(J,-1,1) drunif(J,1,1), θ i ∼ r n o r m ( 1 , 0 , 1 ) \theta_{i}\sim rnorm(1,0,1) θirnorm(1,0,1)。根据2pl模型生成数据,下面是R的code。
N <- 2000;J <- 20;
theta_true <- cbind(rep(1,N),rnorm(N));
a_true<-runif(J,0,2);d_true<-runif(J,-1,1);A_true<-cbind(d_true,a_true);
P_true<-1/(1+exp(-theta_true%*%t(A_true)));
response <- matrix(rbinom(N*J,1,P_true),nrow=N,ncol=J);#response
colnames(response)<-1:J;

以下是反应矩阵的前5行,也就是前5个人的20题的反应向量。
在这里插入图片描述

  • 估计过程。
    –R package “mirt”.
    在R package “mirt” 中,提供了已有的函数mirt直接进行估计,详细的R包的introduction等见下面的链接和参考文献。以下是代码。
library(mirt);
aa<-mirt(response,1,verbose=FALSE);
bb <- cbind(A_true,coef(aa,simplify=TRUE)[[1]][,2],coef(aa,simplify=TRUE)[[1]][,1])[,1:4];
colnames(bb)<-c("d_true","a_true","d_estimator","a_estimator");

以下是输出结果,结果的average bias差不多是0.02503983。
在这里插入图片描述
–GD方法,自己编的code,如下。

#####my code####
#initial value
d_initial <- d_0 <- runif(J,-1,1);a_initial <- a_0 <- runif(J,0,2)
THETA_TUTA <- seq(-4,4,by=8/20);theta_tmp <- THETA_TUTA*THETA_TUTA/2
s_a <- a_0;s_d <- d_0
mm <- cbind(d_0,a_0)%*%rbind(rep(1,length(THETA_TUTA)),THETA_TUTA);
xx<- sweep(exp(sweep(response%*%mm,2,theta_tmp,"-")), 2, apply(1+exp(mm),2,prod), "/");
log_lik_0 <- sum(log(rowSums(xx)));
theta_post <- xx/rowSums(xx);
yy <- 1/(1+exp(-mm));
for(j in 1:J){step_A <- step_d <- 1/200a_grad <- sum(response[,j]*(sweep(theta_post,2,THETA_TUTA,"*")))-sum(sweep(theta_post,2,yy[j,]*THETA_TUTA,"*"))a_tmp <- a_0[j]+a_grad*step_Aa_ttmp <- a_0;a_ttmp[j] <- a_tmp;mm_1 <- cbind(d_0,a_ttmp)%*%rbind(rep(1,length(THETA_TUTA)),THETA_TUTA);xx_1<- sweep(exp(sweep(response%*%mm_1,2,theta_tmp,"-")), 2, apply(1+exp(mm_1),2,prod), "/");log_lik_a_1 <- sum(log(rowSums(xx_1)));while(log_lik_a_1<log_lik_0+step_A*a_grad*a_grad*0.3){step_A <- step_A*0.5a_tmp <- a_0[j]+a_grad*step_A;a_ttmp <- a_0;a_ttmp[j] <- a_tmp;mm_1 <- cbind(d_0,a_ttmp)%*%rbind(rep(1,length(THETA_TUTA)),THETA_TUTA);xx_1<- sweep(exp(sweep(response%*%mm_1,2,theta_tmp,"-")), 2, apply(1+exp(mm_1),2,prod), "/");log_lik_a_1 <- sum(log(rowSums(xx_1)));}d_grad <- sum(response[,j]*theta_post)-sum(sweep(theta_post,2,yy[j,],"*"))d_tmp <- d_0[j]+d_grad*step_d;d_ttmp <- d_0;d_ttmp[j] <- d_tmp;mm_1 <- cbind(d_ttmp,a_0)%*%rbind(rep(1,length(THETA_TUTA)),THETA_TUTA);xx_1<- sweep(exp(sweep(response%*%mm_1,2,theta_tmp,"-")), 2, apply(1+exp(mm_1),2,prod), "/");log_lik_d_1 <- sum(log(rowSums(xx_1)));while(log_lik_d_1<log_lik_0+step_d*d_grad*d_grad*0.2){step_d <- step_d*0.5d_tmp <- d_0[j]+d_grad*step_d;d_ttmp <- d_0;d_ttmp[j] <- d_tmp;mm_1 <- cbind(d_ttmp,a_0)%*%rbind(rep(1,length(THETA_TUTA)),THETA_TUTA);xx_1<- sweep(exp(sweep(response%*%mm_1,2,theta_tmp,"-")), 2, apply(1+exp(mm_1),2,prod), "/");log_lik_d_1 <- sum(log(rowSums(xx_1)));}s_a[j] <- a_tmp;s_d[j] <- d_tmp
}
a_0 <- s_a;d_0 <- s_d
mm <- cbind(d_0,a_0)%*%rbind(rep(1,length(THETA_TUTA)),THETA_TUTA);
xx<- sweep(exp(sweep(response%*%mm,2,theta_tmp,"-")), 2, apply(1+exp(mm),2,prod), "/");
log_lik_1 <- sum(log(rowSums(xx)));
eps <- log_lik_1-log_lik_0
while(eps>0.001){log_lik_0 <- log_lik_1;mm <- cbind(d_0,a_0)%*%rbind(rep(1,length(THETA_TUTA)),THETA_TUTA);xx<- sweep(exp(sweep(response%*%mm,2,theta_tmp,"-")), 2, apply(1+exp(mm),2,prod), "/");theta_post <- xx/rowSums(xx);yy <- 1/(1+exp(-mm));for(j in 1:J){step_A <- step_d <- 1/200a_grad <- sum(response[,j]*(sweep(theta_post,2,THETA_TUTA,"*")))-sum(sweep(theta_post,2,yy[j,]*THETA_TUTA,"*"))a_tmp <- a_0[j]+a_grad*step_Aa_ttmp <- a_0;a_ttmp[j] <- a_tmp;mm_1 <- cbind(d_0,a_ttmp)%*%rbind(rep(1,length(THETA_TUTA)),THETA_TUTA);xx_1<- sweep(exp(sweep(response%*%mm_1,2,theta_tmp,"-")), 2, apply(1+exp(mm_1),2,prod), "/");log_lik_a_1 <- sum(log(rowSums(xx_1)));while(log_lik_a_1<log_lik_0+step_A*a_grad*a_grad*0.3){step_A <- step_A*0.5a_tmp <- a_0[j]+a_grad*step_A;a_ttmp <- a_0;a_ttmp[j] <- a_tmp;mm_1 <- cbind(d_0,a_ttmp)%*%rbind(rep(1,length(THETA_TUTA)),THETA_TUTA);xx_1<- sweep(exp(sweep(response%*%mm_1,2,theta_tmp,"-")), 2, apply(1+exp(mm_1),2,prod), "/");log_lik_a_1 <- sum(log(rowSums(xx_1)));}d_grad <- sum(response[,j]*theta_post)-sum(sweep(theta_post,2,yy[j,],"*"))d_tmp <- d_0[j]+d_grad*step_d;d_ttmp <- d_0;d_ttmp[j] <- d_tmp;mm_1 <- cbind(d_ttmp,a_0)%*%rbind(rep(1,length(THETA_TUTA)),THETA_TUTA);xx_1<- sweep(exp(sweep(response%*%mm_1,2,theta_tmp,"-")), 2, apply(1+exp(mm_1),2,prod), "/");log_lik_d_1 <- sum(log(rowSums(xx_1)));while(log_lik_d_1<log_lik_0+step_d*d_grad*d_grad*0.2){step_d <- step_d*0.5d_tmp <- d_0[j]+d_grad*step_d;d_ttmp <- d_0;d_ttmp[j] <- d_tmp;mm_1 <- cbind(d_ttmp,a_0)%*%rbind(rep(1,length(THETA_TUTA)),THETA_TUTA);xx_1<- sweep(exp(sweep(response%*%mm_1,2,theta_tmp,"-")), 2, apply(1+exp(mm_1),2,prod), "/");log_lik_d_1 <- sum(log(rowSums(xx_1)));}s_a[j] <- a_tmp;s_d[j] <- d_tmp}a_0 <- s_a;d_0 <- s_dmm <- cbind(d_0,a_0)%*%rbind(rep(1,length(THETA_TUTA)),THETA_TUTA);xx<- sweep(exp(sweep(response%*%mm,2,theta_tmp,"-")), 2, apply(1+exp(mm),2,prod), "/");log_lik_1 <- sum(log(rowSums(xx)));eps <- log_lik_1-log_lik_0
}

以下是输出结果,结果的average bias差不多是0.02554339,这组模拟数据也用结果与"mirt" package的结果相差不是很大。通过调节tolerance,结果应该大致一致。
在这里插入图片描述

  • 关于simulation 的比较以及方法的各种性质的考量,应该多做一些replication,获得standard error以及mse等指标。这里没有再叙述。

https://zh.wikipedia.org/wiki/梯度下降法
https://zh.wikipedia.org/wiki/牛顿法
https://philchalmers.github.io/mirt/html/ltm_models_with_mirt.html
[1]: Baker, F. B., & Kim, S. H. (2004). Item response theory: Parameter estimation techniques. CRC Press.
[2]:Chalmers, R. P. (2012). mirt: A multidimensional item response theory package for the R environment. Journal of Statistical Software, 48(6), 1-29.


http://chatgpt.dhexx.cn/article/DsRV76Zr.shtml

相关文章

技术话题(2)实时通讯RT和同步实时通讯IRT的区别

目前西门子 S7-1200 PLC仅支持RT通讯&#xff0c;与 V90 PN 连接做位置控制和速度控制均是通过PROFINET通讯来实现的。 而 S7-1500 PLC 支持IRT通讯&#xff0c;与 V90 PN 做位置控制和速度控制也是由PROFINET通讯来实现的。 下面我们为大家介绍一下RT通讯的特点&#xff1a;…

IRT模型

IRT模型是用来分析考试成绩或者问卷调查数据的数学模型。这些模型的目标是来确定的潜在心理特征&#xff08;latent trait&#xff09;是否可以通过测试题被反应出来&#xff0c;以及测试题和被测试者之间的互动关系。在IRT模型的理念是一个学生回答一个问题是否正确这个结果是…

浅谈知识追踪(BKT、IRT、DKT)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、知识追踪是什么&#xff1f;二、具体内容1.基于贝叶斯的知识追踪&#xff08;BKT&#xff09;项目反应理论&#xff08;IRT&#xff09;深度知识追踪&#…

IRT

文章目录 CTT(classical test theory)历史定义parallel testCronbachs α \alpha α 项目评估P-valueitem-total correlation 缺点 IRT(Item response theory)对于CTT的改进定义三大假设IRF3PL(three parameter logistic model)IRF形态PL模型分类 逻辑正态模型 模型拟合分析项…

Deep-IRT Make Deep Learning Based Knowledge Tracing Explainable Using Item Response Theory

写在前面&#xff1a; 本文在DKVMN的基础上结合项目IRT&#xff0c;加入了student ability network 和 difficulty network两个网络&#xff0c;增加深度知识追踪的可解释性 1 摘要 基于深度学习的知识追踪模型已被证明在不需要人工设计特征的情况下优于传统的知识追踪模型&…

IRT模型学习小结

文章目录 IRT模型学习小结关于IRT模型 IRT模型原理模型介绍参数估计 应用场景 IRT模型学习小结 关于IRT模型 与IRT模型相对应的经典测量理论CCT。经典测量理论与项目反应理论在测量领域均占有重要地位。经典测量理论形成较早&#xff0c;但是经典测量理论却有一些难以克服的缺…

自适应学习系列(一)IRT简介

2019独角兽企业重金招聘Python工程师标准>>> 自适应学习之IRT简介 一、近端发展区(ZPD) Zone of Proximal Development&#xff08;ZPD&#xff09;是由心理学家Vygotsky提出来的一种学习理论&#xff0c;是目前自适应学习常用的思考模型。他认为&#xff0c;能力高…

IRT模型的参数估计方法(EM算法和MCMC算法)

1、IRT模型概述   IRT&#xff08;item response theory 项目反映理论&#xff09;模型。IRT模型用来描述被试者能力和项目特性之间的关系。在现实生活中&#xff0c;由于被试者的能力不能通过可观测的数据进行描述&#xff0c;所以IRT模型用一个潜变量 θθ 来表示&#xff…

知识追踪常见建模方法之IRT项目反应理论

目录 A.项目反应理论&#xff08;IRT item response theory&#xff09; 概述 历史发展 特点 模型 A.项目反应理论&#xff08;IRT item response theory&#xff09; 概述 IRT理论即项目反应理论(Item Response Theory, IRT)&#xff0c;又称题目反应理论、潜在特质理论…

知识追踪系列之IRT

IRT简介 IRT理论即项目反应理论(Item Response Theory, IRT)。F. Lord在1951年从普林斯顿大学毕业时的博士论文《A Theory of Test Scores》被认为是IRT理论的开端之作。IRT最早使用在心理学领域&#xff0c;目的是做能力评估。现在已广泛应用于教育行业&#xff0c;用于校准评…

贝叶斯分类器(上)

目录 一、有关贝叶斯的简介 二、相关数学知识 1.先验概率与后验概率 2.贝叶斯公式 3、最大后验概率 4、最大似然估计法 一、有关贝叶斯的简介 贝叶斯老爷子的名字&#xff0c;很多同学都耳熟能详。估计不少的同学都在数学上被贝叶斯折磨过。贝叶斯在数学方面主要研究概率论…

机器学习常用的分类器比较-实例

这篇学习文章是在上一篇博客&#xff08;http://blog.csdn.net/july_sun/article/details/53088673&#xff09;的基础上&#xff0c;从机器学习的四要素&#xff08;数据&#xff0c;算法和模型&#xff0c;计算机硬件&#xff0c;机器学习平台&#xff09;角度出发用实例将各…

模式识别之分类器

常见分类器介绍 1、SVM分类器&#xff08;监督学习分类器&#xff09; 答&#xff1a;训练样本必须先标识不同类别&#xff0c;然后进行训练。SVM算法就是找一个超平面&#xff0c;对于已经被标记的训练样本&#xff0c;SVM训练得到一个超平面&#xff0c;使得两个类别训练集中…

常用分类器的效果对比

如果把机器学习归为两大类&#xff0c;那么主要的工作可以分为&#xff1a;分类和聚类。而分类任务基本上占整个机器学习或者是数据挖掘领域的70%,可见我们遇到的很多问题&#xff0c;都可以用分类的算法进行解决。机器学习发展到现在&#xff0c;许多被证实有效的分类算法被提…

监督学习之分类学习:线性分类器

监督学习之分类学习:线性分类器 如果想了解更多的知识&#xff0c;可以去我的机器学习之路 The Road To Machine Learning通道 Introduction 分类学习是最为常见的监督学习问题,并且其中的经典模型也最为广泛地被应用。其中,最基础的便是二分类(Binary Classification) 问题…

【线性分类器】线性分类器理论知识

文章目录 一、图像分类任务二、线性分类器&#xff1a;2.1 图像表示&#xff1a;2.2 损失函数&#xff1a;多类支持向量机损失&#xff1a; 2.3 正则项与超参数&#xff1a;K折交叉验证&#xff1a; 2.4 优化算法&#xff1a;梯度下降法&#xff08;SGD&#xff09;&#xff1a…

分类器的相关概念

昨天&#xff0c;人民网 发了一条八卦微博&#xff0c;盘点“雨神”&#xff08;萧敬腾&#xff09;是如何炼成的。微博称&#xff0c;网友统计发现&#xff0c;在萧敬腾 近年12次主要行程中&#xff0c;有10次他的“现身”让当地下起了雨&#xff0c;下雨的概率为83.3%。 图1 …

二类分类器构造多类分类器

from&#xff1a; http://tech.ddvip.com/2009-03/1238054080112304.html 从 SVM的那几张图可以看出来&#xff0c;SVM是一种典型的两类分类器&#xff0c;即它只回答属于正类还是负类的问题。而现实中要解决的问题&#xff0c;往往是多类的问题&#xff08;少部分例外&#xf…

KNN分类器

1&#xff0e;1 KNN的主要研究内容 &#xff08;1&#xff09;分类器的基本原理及算法内容 &#xff08;2&#xff09;利用现有的公开数据集&#xff08;鸢尾花&#xff09;实现分类器分类 &#xff08;3&#xff09;利用某种评价标准对分类结果进行分析评判 1.2分类的定义…

机器学习学习笔记(三)之分类器

分类器&#xff1a; 输入数据&#xff0c;识别是什么类&#xff0c;可以拓展为更广泛的用途。 将特征数据化&#xff0c;作为判断的依据。 和regression有相似的地方&#xff0c;但也有很大区别&#xff0c;把最好不把classification当作regression做 对于有多个分组的如cla…