def rasch_jml(dataset, discrimination=1, options=None)
Estimates difficulty parameters in an IRT model
dataset
discrimination
options
difficulty
def rasch_jml(dataset, discrimination=1, options=None):
""" Estimates difficulty parameters in an IRT model
Args:
dataset: [items x participants] matrix of True/False Values
discrimination: scalar of discrimination used in model (default to 1)
options: dictionary with updates to default options
Returns:
difficulty: (1d array) estimates of item difficulties
Options:
* max_iterations: int
"""
options = validate_estimation_options(options)
# Defines item parameter update function
def _item_min_func(n_items, alphas, thetas,
betas, the_sign, counts):
# pylint: disable=cell-var-from-loop
for ndx in range(n_items):
scalar = alphas[0] * the_sign[ndx, :]
def _beta_min(beta):
otpt = 1.0 / (1.0 + np.exp(scalar *
(thetas - beta)))
return -np.log(otpt).dot(counts)
# Solves for the beta parameters
betas[ndx] = fminbound(_beta_min, -6, 6)
return alphas, betas
result = _jml_abstract(dataset, _item_min_func,
discrimination, options['max_iteration'])
return result[1]