Nothing
mleEst <-
function(resp, # The vector of responses
params, # The item parameters
range = c(-6, 6), # The integer to maximize over
mod = c("brm", "grm"), # The model
...)
{
# First turn params into a matrix:
params <- rbind(params)
# And turn response into a matrix:
resp <- {if( dim(params)[1] > 1) rbind(resp) # ... --> turn it into a multi-column matrix,
else cbind(resp)} # ... --> or a 1-column matrix
#~~~~~~~~~~~~~~~~~#
# Argument Checks #
#~~~~~~~~~~~~~~~~~#
# Make sure that the arguments are OK:
## 1 ## (Make sure that params and resp are ALL numeric)
if(mode(params) != "numeric")
stop("params need to be numeric")
if(!is.null(resp) & mode(resp) != "numeric")
stop("resp needs to be numeric")
## 2 ## (Make sure that the dimensions of params and response are equal)
if(!is.null(resp) & (dim(resp)[2] != dim(params)[1]))
stop("number of params does not match the length of resp")
#~~~~~~~~~~~~~~~~~~~~~~~~#
# Maximum Likelihood Est #
#~~~~~~~~~~~~~~~~~~~~~~~~#
# Indicate the lower/upper boundary of the search:
if(is.null(range))
range <- c(-6, 6)
l <- range[1]; u <- range[2]
est <- NULL # a vector for estimates
# Then, maximize the loglikelihood function over that interval for each person:
likFun <- get(paste0("logLik.", mod))
for(i in 1:dim(resp)[1]){
est[i] <- optimize(likFun, lower = l, upper = u, maximum = TRUE,
u = resp[i, ], params = params,
type = "MLE")$max
} # END for i LOOP
# And pull out the information as well as the SEM:
info <- get(paste("FI.", mod, sep = ""))(params = params,
theta = est,
type = "observed",
resp = resp)
list(theta = est, info = info$test, sem = info$sem)
} # END mleEst FUNCTION
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.