Probability Model
Carla.CPM — TypeCPM()
CPM(kwargs...)CPM is the data structure for Carla Probability Model.
Keword Arguments
emissionprob::ResponseFunction– Emission Probability functiontransitionprob::ResponseFunction– Transition Probability functioninitialwvec::Vector{Float64}– Weight Vector to initialize gaussian priorsvarianceprior– Variance for initializing a gaussian prioropts– Options for estimands, by default usesEstimandOpts(initparamnoiseSD = 0.2, estimatebeta = true, estimatedelta = false)paramconstraints::NamedTuple– Parameter Cosntraints (min=-Inf,max=Inf)
Notes
All the fields can be assigned using the appropriate keywords. The initialization constructor CPM(), uses the values in the example, as default for the fields in CPM.
Examples
julia> M1 = CPM()
CPM(DINA(), DINA(), [1.2, 0.6], 0.1865671641791045, EstimandOpts(0.2, true, false))
julia> M2 = CPM(emissionprob = DINO())
CPM(DINO(), DINA(), [1.2, 0.6], 0.1865671641791045, EstimandOpts(0.2, true, false))
julia> M3 = CPM(emissionprob = DINO(), opts = EstimandOpts(estimatedelta=true))
CPM(DINO(), DINA(), [1.2, 0.6], 0.1865671641791045, EstimandOpts(0.2, true, true))Carla.EstimandOpts — TypeEstimandOpts()
EstimandOpts(kwargs...)Sets the options for CPM estimands
Keyword Arguments
initparamnoiseSD::Float64- S.D of the random noise to be added during parameter initialization, by default0.2estimatebeta::Bool- should betas be estimated as part of learning, by defaulttrueestimatedelta::Bool- should deltas be estimated as part of learning, by defaultfalse
Example
julia> EstimandOpts()
EstimandOpts(0.2, true, false)
julia> EstimandOpts(estimatedelta = true)
EstimandOpts(0.2, true, true)Data
Carla.StudentResponse — TypeStudentResponse(itemResponse::Matrix
missingindicator::Matrix)Data structure for one examinee.
Fields
itemResponse: A student's item-responses for the entire coursemissingindicator: Indicates if the data was observable
The observable responses of an examinee across all exams,
\[y = S . X \]
where $S$ is the missing data indicator and $X$ is item response
Latent Response
Carla.DINA — TypeDINA <: ResponseFunctionDINA Response Function
Carla.DINO — TypeDINO <: ResponseFunctionDINO Response Function
Carla.FUZZYDINA — TypeFUZZYDINA <: ResponseFunctionFUZZYDINA Response Function
Carla.ResponseFunction — TypeResponseFunctionAbstract type for response functions
Parameters
Carla.GaussianParameterInit — TypeGaussianParameterInit(mean::Union{Float64,Vector{Float64}},
varianceprior::Float64, noiseSD::Float64 (optional))Initializes a gaussian parameter prior with the given mean, and co-variance
Examples
julia> GaussianParameterInit(0.5,0.1)
GaussianParameterInit(0.5, 0.2, 0.1, [10.0;;])
julia> GaussianParameterInit([0.2, 0.6], 0.5)
GaussianParameterInit([0.2, 0.6], 0.2, 0.5, [2.0 0.0; 0.0 2.0])
julia> GaussianParameterInit([0.2, 0.6], 0.5, 0.5) # Also passing initparamsd (0.5)
GaussianParameterInit([0.2, 0.6], 0.5, 0.5, [2.0 0.0; 0.0 2.0])Carla.params — Typeparams(prior::GaussianParameterInit)Example
julia> M1 = CPM()
CPM(DINA(), DINA(), [1.2, 0.6], 0.1865671641791045, EstimandOpts(0.2, true, false))
julia> # Initializing βparams for our M1 model.
julia> βparams = params(GaussianParameterInit(M1.initialwvec,
M1.varianceprior))
params(GaussianParameterInit([1.2, 0.6], 0.2, 0.1865671641791045, [5.359999999999999 0.0; 0.0 5.359999999999999]), [1.3862321329853542, 0.6293077030876637])
julia> # Initializing initialδoarams for our M1 model
julia> prioralpha = 0
julia> initialδprior = initialdelta_init(M1.initialwvec, M1.varianceprior,prioralpha)
julia> initialδparams = params(initialδprior)
params(GaussianParameterInit(-0.6, 0.2, 0.1865671641791045, [5.359999999999999;;]), [-0.5142508455381457])
julia> # Suppose we had 4 skills
julia> initialdeltas =[params(initialδprior) for i in 1:4]
julia> # We'll turn this into a StructArray object for better element access and manipulation
julia> initialdeltas = soa(initialdeltas)
julia> # While accessing values of initialdeltas, always use flat function
julia> flat(initialdeltas.val)
4-element Vector{Float64}:
-0.5152143458269017
-0.5816928334586648
-0.5639140047678437
-0.4054633302643975 Learning Algorithm
Carla.LBFGS — TypeLBFGS()
LBFGS(kwargs...)Fields
searchdirectionmaxnorm: maximum search direction norm; defulat = 1.0innercycles: no. of batch inner cycles; defualt = 40maxsearchdev: reset research direction if search direction is almost ⟂ to -ve gradient; default = 1e-4