Rasch modeling with all the bells and whistles. Implementations for Rasch model, partial credit model, rating scale model, and its linear extensions (upcoming). Classical and Bayesian estimation.
The conditional maximum likelihood estimation only allows to estimate item parameters. Warm's weighted likelihood estimation (Warm, 1989) should be implemented to also allow for person parameter estimation.
We should probably define some sensible defaults for JuliaFormatter.
For now I just used the default settings in VSCode.
Realistically we should use the same style for every package in JuliaPsychometrics.
function AbstractItemResponseModels.irf(model::RaschModel{PointEstimate}, theta::Real, i, y::Real)
checkresponsetype(response_type(model), y)
parname =Symbol("beta[$i]")
beta = model.pars.values[parname]
return_irf(theta, beta, y)
end
function AbstractItemResponseModels.irf(model::RaschModel{SamplingEstimate}, theta::Real, i, y::Real)
checkresponsetype(response_type(model), y)
beta =vec(model.pars["beta[$i]"])
return_irf(theta, beta, y)
end
These two instances can be fixed by implementing a new function getitempars for fetching item parameters for various data structures. Eventually getitempars could be part of the JuliaPsychometrics/AbstractItemResponseModels.jl interface.
Why are both of these methods required? If we leave out the second function definition, then _fit_by_alg will dispatch on the correct method of _fit_by_cml anyways.
AbstractItemResponseModels.jl 0.2.0 implements two new interface functions getitemlocations and getpersonlocations that should be implemented once JuliaPsychometrics/AbstractItemResponseModels.jl#17 is merged.