Probability Model

Carla.CPMType
CPM()
CPM(kwargs...)

CPM is the data structure for Carla Probability Model.

Keword Arguments

  • emissionprob::ResponseFunction – Emission Probability function
  • transitionprob::ResponseFunction – Transition Probability function
  • initialwvec::Vector{Float64} – Weight Vector to initialize gaussian priors
  • varianceprior – Variance for initializing a gaussian prior
  • opts – Options for estimands, by default uses EstimandOpts(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))
source
Carla.EstimandOptsType
EstimandOpts()
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 default 0.2
  • estimatebeta::Bool - should betas be estimated as part of learning, by default true
  • estimatedelta::Bool - should deltas be estimated as part of learning, by default false

Example

julia> EstimandOpts()
EstimandOpts(0.2, true, false)

julia> EstimandOpts(estimatedelta = true)
EstimandOpts(0.2, true, true)
source

Data

Carla.StudentResponseType
StudentResponse(itemResponse::Matrix
                missingindicator::Matrix)

Data structure for one examinee.

Fields

  • itemResponse: A student's item-responses for the entire course
  • missingindicator: 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

source

Latent Response

Parameters

Carla.GaussianParameterInitType
GaussianParameterInit(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])
source
Carla.paramsType
params(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 
source

Learning Algorithm

Carla.LBFGSType
LBFGS()
LBFGS(kwargs...)

Fields

  • searchdirectionmaxnorm: maximum search direction norm; defulat = 1.0
  • innercycles: no. of batch inner cycles; defualt = 40
  • maxsearchdev: reset research direction if search direction is almost ⟂ to -ve gradient; default = 1e-4
source