To install the package

using Pkg; Pkg.add(url="")

Getting Data

In this example we'll use one of the data available through CDMrdata package

using CDMrdata 
using DataFrames
dat = load_data("ecpe")
Q = dat["q.matrix"]
X = dat["data"]
first(X,3) # hide

In the above item-response data, we can se that we have an unwanted column - id. Always make sure you delete these kind of redundant columns first before doing any sort of data preparation using the functions available in Carla.jl package.

X = X[:,Not(:id)]
first(X, 3) # hide


Also make sure you convert the item response matrix and Q-Matrix into Matrices. (i.e don't work with dataframes). When you load a dataset from CDMrpackage or your own data using,DataFrame) function, the X and Q will be in dataframe format. This needs to be converted to matrices.

X = Matrix(X)
Q = Matrix(Q)
nothing # hide

The item-response data needs to be converted into StudentResponse data type, to be compatible with Carla.jl routines. This is achieved by the convertX() function.

using Carla
X = convertX(X)
first(X,3) # hide

Initializing a model

To instantiate a Carla Probability Model with defaults, you can call the CPM constructor

M1 = CPM()
CPM(DINA(), DINA(), [1.2, 0.6], 0.1865671641791045, EstimandOpts(0.2, true, false), (min = -Inf, max = Inf))

Configuring the Model

The above function create a Carla probability model with DINA type emission and transition probability. By default, the model is only configured to estimate beta. If you want to estimate delta also, it can be configured using EstimandOpts

M1 = CPM(opts = EstimandOpts(estimatedelta=true))
CPM(DINA(), DINA(), [1.2, 0.6], 0.1865671641791045, EstimandOpts(0.2, true, true), (min = -Inf, max = Inf))

Suppose you are interested in a different emission response type (say DINO), in that case you initialize the model as follows:

M1 = CPM(emissionprob=DINO(), opts = EstimandOpts(estimatedelta=true))
CPM(DINO(), DINA(), [1.2, 0.6], 0.1865671641791045, EstimandOpts(0.2, true, true), (min = -Inf, max = Inf))

All configurable options available while initializing a model can be found in the documnetation for CPM and EstimandOpts.


The estimation process is initiated by the CARLA function. To initiate the estimation using the default configuration, you call the CARLA function with the data and Q:

results = CARLA(M1,data, Q)

By default, CARLA uses GradientDescent and Exact method. To change it to LBFGS

results = CARLA(M1,data,Q, m_strategy = LBFGS())

list of configurable options are available in the documentation for CARLA function.