R: Latent Trait Posterior of the Three-Parameter Binary Probit...
fmodel3pp
R Documentation
Latent Trait Posterior of the Three-Parameter Binary Probit Model
Description
fmodel3pp evaluates the (unnormalized) posterior density of the latent trait of a three-parameter binary probit item response model with given prior distribution, and computes the probabilities for each item and response category given the latent trait.
Usage
fmodel3pp(zeta, y, apar, bpar, cpar, prior = dnorm, ...)
Arguments
zeta
Latent trait value.
y
Vector of length m for a single response pattern, or matrix of size s by m of a set of s item response patterns. In the latter case the posterior is computed by conditioning on the event that the response pattern is one of the s response patterns. Elements of y should be 0 or 1.
apar
Vector of m "discrimination" parameters.
bpar
Vector of m "difficulty" parameters.
cpar
Vector of m lower asymptote (i.e., "guessing") parameters.
prior
Function that evaluates the prior distribution of the latent trait. The default is a standard normal distribution.
where Φ is the distribution function of a standard normal distribution, α_j is the discrimination parameter (apar), β_j is the difficulty parameter (bpar), 0 ≤ γ_j < 1 is the lower asymptote parameter (cpar), and ζ_i is the latent trait (zeta).
Value
post
The log of the unnormalized posterior distribution evaluated at zeta.
prob
Matrix of size m by 2 array of item response probabilities.
Note
This function is designed to be called by other functions in the ltbayes package, but could be useful on its own. This function calls fmodel4pp since it is a special case.
Author(s)
Timothy R. Johnson
See Also
See fmodel1pp, fmodel2pp, and fmodel4pp for related models, and fmodel3pl for a logit variant of this model.
Examples
samp <- 5000 # samples from posterior distribution
burn <- 1000 # burn-in samples to discard
alph <- rep(1, 5) # discrimination parameters
beta <- -2:2 # difficulty parameters
gamm <- rep(0.1, 5) # lower asymptote parameters
post <- postsamp(fmodel3pp, c(1,1,0,0,0),
apar = alph, bpar = beta, cpar = gamm,
control = list(nbatch = samp + burn))
post <- data.frame(sample = 1:samp,
zeta = post$batch[(burn + 1):(samp + burn)])
with(post, plot(sample, zeta), type = "l") # trace plot of sampled realizations
with(post, plot(density(zeta, adjust = 2))) # density estimate of posterior distribution
with(posttrace(fmodel3pp, c(1,1,0,0,0),
apar = alph, bpar = beta, cpar = gamm),
plot(zeta, post, type = "l")) # profile of log-posterior density
information(fmodel3pp, c(1,1,0,0,0),
apar = alph, bpar = beta, cpar = gamm) # Fisher information
with(post, mean(zeta)) # posterior mean
postmode(fmodel3pp, c(1,1,0,0,0),
apar = alph, bpar = beta, cpar = gamm) # posterior mode
with(post, quantile(zeta, probs = c(0.025, 0.975))) # posterior credibility interval
profileci(fmodel3pp, c(1,1,0,0,0), apar = alph,
bpar = beta, cpar = gamm) # profile likelihood confidence interval