*********** data preparation *********** clear set mem 100M set more off use spelling, clear list in 1/6, clean gen pattern=_n reshape long i, i(pattern) j(item) rename i score list in 1/8, clean tab item, gen(d) forvalues i=1/4{ generate negd`i'=-d`i' } list negd1-negd4 in 1/4, clean ********** 1PL logistic model ********** gllamm score negd1-negd4, i(pattern) link(logit) family(binom) weight(wt) nip(15) nocons adapt trace estimates store onepl *ICC for the Rasch model set scheme sj twoway (function Infidelity=invlogit(x-[score]negd1), range(-6 6)) /// (function Panoramic =invlogit(x-[score]negd2), range(-6 6) lpatt(".")) /// (function Succumb =invlogit(x-[score]negd3), range(-6 6) lpatt("-")) /// (function Girder =invlogit(x-[score]negd4), range(-6 6) lpatt("_")) graph save ICC1 ********** 2PL logistic model ********** eq loading: d1-d4 gllamm score negd1-negd4, i(pattern) eqs(loading) link(logit) family(binom) weight(wt) nip(15) nocons adapt trace estimates store twopl lrtest onepl twopl *ICC for the 2PL model twoway (function Infidelity=invlogit(x-[score]negd1), range(-6 6)) /// (function Panoramic =invlogit([pat1_1l]d2*x-[score]negd2), range(-6 6) lpatt(".")) /// (function Succumb =invlogit([pat1_1l]d3*x-[score]negd3), range(-6 6) lpatt("-")) /// (function Girder =invlogit([pat1_1l]d4*x-[score]negd4), range(-6 6) lpatt("_")) graph save ICC2 matrix list e(b) *********** latent regression model ************ eq f1: male gllamm score negd1-negd4, i(pattern) link(logit) family(binom) weight(wt) geqs(f1) nip(15) nocons adapt trace