I have read (ordinal regression and IRT with BRMS) tutorials and checked stan/brms forum for a solid example for testing the PO assumption (with cumulative link). I am hoping to get some feedback towards forming a working example for the application of the available information about PO assumption testing with brms. In particular I will appreciate feedback as to how to compare models properly , and how a comparison of two models of different families (cumulative and adjacent cats.) makes sense.
Here is my baseline version of the example (subject to corrections):The data-set includes multiple person/item (paired) measurements (ordered categories) before and after an intervention.
The variables of the model:
- pl: response variable-ordinal-3 point likert item
- time: categorical (before,after)
- Persoon: categorical
- compItem: categorical
Cumulative link with PO assumption is the best model that suits the ordering relation between categories.
fitc <- brm(pl ~ time+(1|Persoon)+(1|compItem), data = mydata, prior= prior_ma, family=cumulative(link= “logit”, threshold=“flexible”))
I have created another model, this time with familiy =acat and with CS effects for comparison, hence to check the differences between the the cumulative and acat models:
fita2 <- brm(pl ~ cs(time)+(1|Persoon)+(1|compItem), data = mydata, prior= prior_ma, family=acat(link= “logit”, threshold=“flexible”))
The comparison of the two models against each other does not suggest that addition of CS effects makes an important difference (?), so I can assume PO assumption holds.
Output 1 (Cumulative)
Family: cumulative
Links: mu = logit; disc = identity
Formula: pl ~ time + (1 | Persoon) + (1 | compItem)
Data: assdata (Number of observations: 1224)
Samples: 4 chains, each with iter = 2000; warmup = 1000; thin = 1;
total post-warmup samples = 4000
Group-Level Effects:
~compItem (Number of levels: 52)
Estimate Est.Error l-95% CI u-95% CI Eff.Sample Rhat
sd(Intercept) 1.18 0.14 0.93 1.49 1057 1.00
~Persoon (Number of levels: 16)
Estimate Est.Error l-95% CI u-95% CI Eff.Sample Rhat
sd(Intercept) 1.57 0.35 1.02 2.37 929 1.00
Population-Level Effects:
Estimate Est.Error l-95% CI u-95% CI Eff.Sample Rhat
Intercept[1] -1.58 0.43 -2.48 -0.74 540 1.01
Intercept[2] 1.03 0.43 0.14 1.90 549 1.01
timet2 0.60 0.12 0.37 0.84 5682 1.00
Output 2 (Acat with CS effects)
Family: acat
Links: mu = logit; disc = identity
Formula: pl ~ cs(time) + (1 | Persoon) + (1 | compItem)
Data: assdata (Number of observations: 1224)
Samples: 4 chains, each with iter = 2000; warmup = 1000; thin = 1;
total post-warmup samples = 4000
Group-Level Effects:
~compItem (Number of levels: 52)
Estimate Est.Error l-95% CI u-95% CI Eff.Sample Rhat
sd(Intercept) 0.95 0.12 0.74 1.20 1282 1.00
~Persoon (Number of levels: 16)
Estimate Est.Error l-95% CI u-95% CI Eff.Sample Rhat
sd(Intercept) 1.24 0.29 0.80 1.89 1276 1.01
Population-Level Effects:
Estimate Est.Error l-95% CI u-95% CI Eff.Sample Rhat
Intercept[1] -1.10 0.36 -1.82 -0.40 682 1.01
Intercept[2] 0.69 0.36 -0.02 1.41 731 1.00
timet2[1] 0.54 0.16 0.23 0.86 8089 1.00
timet2[2] 0.52 0.16 0.22 0.82 7964 1.00