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.2
estimatebeta::Bool
- should betas be estimated as part of learning, by defaulttrue
estimatedelta::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 <: ResponseFunction
DINA Response Function
Carla.DINO
— TypeDINO <: ResponseFunction
DINO Response Function
Carla.FUZZYDINA
— TypeFUZZYDINA <: ResponseFunction
FUZZYDINA Response Function
Carla.ResponseFunction
— TypeResponseFunction
Abstract 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