# StatsModels: get levels and model matrix for each level of categorical term

**URL:** <https://discourse.julialang.org/t/statsmodels-get-levels-and-model-matrix-for-each-level-of-categorical-term/50586>\
**Category:** New to Julia\
**Tags:** question\
**Created:** [November 22, 2020, 4:28pm UTC](https://discourse.julialang.org/t/statsmodels-get-levels-and-model-matrix-for-each-level-of-categorical-term/50586 "2020-11-22T16:28:21Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![PharmCat](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/pharmcat/32/6953_2.png) [@PharmCat](https://discourse.julialang.org/u/PharmCat)\
**Post date:** [November 22, 2020, 4:28pm UTC](https://discourse.julialang.org/t/statsmodels-get-levels-and-model-matrix-for-each-level-of-categorical-term/50586/1 "2020-11-22T16:28:21Z")

</div>

I have dataframe (df) with categoricals factors and i make schema `fs = apply_schema(someterm, StatsModels.schema(df))` (where someterm is `InteractionTerm`). Then I want to get a vector of levels and then get a submatrix of the model matrix for each level.  
From one side I can get `mx = modelcols(fs, df) ` and then get `view(mx, :, levelrange)`, but how to get column range for each level? Or how to get a map of the model matrix column to levels? Or there is no such functionality in StatsModels?

---

<div class="post-metadata">

**Author:** ![PharmCat](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/pharmcat/32/6953_2.png) [@PharmCat](https://discourse.julialang.org/u/PharmCat)\
**Post date:** [March 5, 2021, 1:40pm UTC](https://discourse.julialang.org/t/statsmodels-get-levels-and-model-matrix-for-each-level-of-categorical-term/50586/2 "2021-03-05T13:40:48Z")

</div>

Mmm… really no way to get Term for specific model matrix column?

---

<div class="post-metadata">

**Author:** ![PharmCat](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/pharmcat/32/6953_2.png) [@PharmCat](https://discourse.julialang.org/u/PharmCat)\
**Post date:** [March 15, 2021, 12:45pm UTC](https://discourse.julialang.org/t/statsmodels-get-levels-and-model-matrix-for-each-level-of-categorical-term/50586/3 "2021-03-15T12:45:27Z")

</div>

this can be helfull:

```julia

function lcontrast(mm::ModelMatrix, i::Int)
    n = mm.assign[end]
    if i > n || n < 1 error("Factor number out of range 1-$(n)") end
    inds = findall(x -> x==i, lmm.mm.assign)
    mx = zeros(length(inds), size(lmm.mm.m, 2))
    for i = 1:length(inds)
        mx[i, inds[i]] = 1
    end
    mx
end

```
