MCMC Estimation of the Two-Parameter Normal Ogive Item Response Model
This function estimates the Two-Parameter normal ogive item response model by MCMC sampling (Johnson & Albert, 1999, p. 195ff.).
mcmc.2pno(dat, weights=NULL, burnin=500, iter=1000, N.sampvalues=1000, progress.iter=50, save.theta=FALSE)
dat |
Data frame with dichotomous item responses |
weights |
An optional vector with student sample weights |
burnin |
Number of burnin iterations |
iter |
Total number of iterations |
N.sampvalues |
Maximum number of sampled values to save |
progress.iter |
Display progress every |
save.theta |
Should theta values be saved? |
The two-parameter normal ogive item response model with a probit link function is defined by
P(X_{pi}=1 | θ_p )=Φ ( a_i θ_p - b_i ) \quad, \quad θ_p \sim N(0,1)
Note that in this implementation non-informative priors for the item parameters are chosen (Johnson & Albert, 1999, p. 195ff.).
A list of class mcmc.sirt
with following entries:
mcmcobj |
Object of class |
summary.mcmcobj |
Summary of the |
burnin |
Number of burnin iterations |
iter |
Total number of iterations |
a.chain |
Sampled values of a_i parameters |
b.chain |
Sampled values of b_i parameters |
theta.chain |
Sampled values of θ_p parameters |
deviance.chain |
Sampled values of Deviance values |
EAP.rel |
EAP reliability |
person |
Data frame with EAP person parameter estimates for θ_p and their corresponding posterior standard deviations |
dat |
Used data frame |
weights |
Used student weights |
... |
Further values |
Johnson, V. E., & Albert, J. H. (1999). Ordinal Data Modeling. New York: Springer.
S3 methods: summary.mcmc.sirt
, plot.mcmc.sirt
For estimating the 2PL model with marginal maximum likelihood see
rasch.mml2
or smirt
.
A hierarchical version of this model can be estimated with
mcmc.2pnoh
.
## Not run: ############################################################################# # EXAMPLE 1: Dataset Reading ############################################################################# data(data.read) # estimate 2PNO with MCMC with 3000 iterations and 500 burn-in iterations mod <- sirt::mcmc.2pno( dat=data.read, iter=3000, burnin=500 ) # plot MCMC chains plot( mod$mcmcobj, ask=TRUE ) # write sampled chains into codafile mcmclist2coda( mod$mcmcobj, name="dataread_2pno" ) # summary summary(mod) ############################################################################# # EXAMPLE 2 ############################################################################# # simulate data N <- 1000 I <- 10 b <- seq( -1.5, 1.5, len=I ) a <- rep( c(1,2), I/2 ) theta1 <- stats::rnorm(N) dat <- sirt::sim.raschtype( theta=theta1, fixed.a=a, b=b ) #*** # Model 1: estimate model without weights mod1 <- sirt::mcmc.2pno( dat, iter=1500, burnin=500) mod1$summary.mcmcobj plot( mod1$mcmcobj, ask=TRUE ) #*** # Model 2: estimate model with weights # define weights weights <- c( rep( 5, N/4 ), rep( .2, 3/4*N ) ) mod2 <- sirt::mcmc.2pno( dat, weights=weights, iter=1500, burnin=500) mod1$summary.mcmcobj ## End(Not run)
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.