# Installation

To install the package

`using Pkg; Pkg.add(url="https://github.com/athulsudheesh/Carla.jl")`

# 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
```

### Note

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 `CSV.read(path,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`

.

# Estimation

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.