Latent Logistic Test Model
Message/Author
 Gèr Steffens posted on Monday, June 11, 2018 - 7:35 am
I'm currently working on a project using Mixture item response theory where we are trying to combine two different models. A Linear Logistic Test Model (LLTM: a Rasch variant) and a Latent Class analysis.

I have found an article by De Ayala and Santiago (2016) who used Mplus to combine a basic rasch model and LCA. They estimated the following probability:
p_{ijc} = (exp(alpha(theta_{ic}-delta{jc})/(1+exp(alpha(theta_{ic}-delta{jc})

Where the theta is basically the factor score in Mplus and the delta are the item thresholds.

The model they use is:
%overall\$
f by i1-i10*(1);
[f@0];
%c#1%
f by i1-i10@1;
f;
[i1\$1-i10\$1];
%c#2%
f by i1-i10@1;
f;
[i1\$1-i10\$1];

What I was wondering if it is possible to expand this model in Mplus to an LLTM. This would entail replacing each item by a summation over beta of, in our current study, five characteristics. So we have a response (0/1) which is linked to ordinal categories which compose the item.

The basic LLTM model would be:
nu_{ij} = theta_{i}-sum{k=1 to 5} beta{jk}
Rather than the normal rasch model where:
nu_{ij} = theta_{i}-beta{j}

Would this be estimable in Mplus?
 Tihomir Asparouhov posted on Tuesday, June 12, 2018 - 9:19 am
I think you can estimate it as follows

%overall\$
f by i1-i10*(1);
[f@0];
%c#1%
f by i1-i10@1;
f;
[i1\$1-i10\$1] (d1_1-d1_10);
[i1\$2-i10\$2] (d2_1-d2_10);
[i1\$3-i10\$3] (d3_1-d3_10);
[i1\$4-i10\$4] (d4_1-d4_10);
[i1\$5-i10\$5] (d5_1-d5_10);
%c#2%
f by i1-i10@1;
f;
[i1\$1-i10\$1] (dd1_1-dd1_10);
[i1\$2-i10\$2] (dd2_1-dd2_10);
[i1\$3-i10\$3] (dd3_1-dd3_10);
[i1\$4-i10\$4] (dd4_1-dd4_10);
[i1\$5-i10\$5] (dd5_1-dd5_10);

model constraint:
new(b1_1-b1_10);
do(1,10) b1_#=d1_#;
new(b2_1-b2_10);
do(1,10) b2_#=d2_#-d1_#;
new(b3_1-b3_10);
do(1,10) b3_#=d3_#-d2_#;
new(b4_1-b4_10);
do(1,10) b4_#=d4_#-d3_#;
new(b5_1-b5_10);
do(1,10) b5_#=d5_#-d4_#;

new(bb1_1-bb1_10);
do(1,10) bb1_#=dd1_#;
new(bb2_1-bb2_10);
do(1,10) bb2_#=dd2_#-dd1_#;
new(bb3_1-bb3_10);
do(1,10) bb3_#=dd3_#-dd2_#;
new(bb4_1-bb4_10);
do(1,10) bb4_#=dd4_#-dd3_#;
new(bb5_1-bb5_10);
do(1,10) bb5_#=dd5_#-dd4_#;
 Gèr Steffens posted on Tuesday, June 12, 2018 - 10:37 am
Dear Tihomir,

Thanks for the response. However I fear I was not clear enough in communicating the model I am trying to estimate. The solution you provided is for an ordinal variable with 5 possible outcomes. This is not the model I am looking for

I think part of the problem is I forgot an X_{kj} in the formulation of the model. It should be:

nu_{ij} = theta_{i}-sum{k=1 to 5}( beta_{jk} * X_{kj}

Here the X_{kj} represents the value of item j on property k, each of which can take a value from 1 to 3 (an example J would be represented by 23212 so X{1j} = 2, X{2j} = 3 etc).

I'm trying to estimate the thresholds of the items by estimating the beta's for each of these characteristics rather than estimating them directly. So the threshold of item J is determined by the beta's of its characteristics. So for an item i1 = 23212 we would have:

[i1\$1] = Beta = beta_1\$2 + beta_2\$3 + beta_3\$2 + beta4\$1 + beta5\$2.

And nu_{ij} = theta_{i} - beta_1\$2 + beta_2\$3 + beta_3\$2 + beta4\$1 + beta5\$2

This differs from the model by De Ayala and Santiago in that I'm not trying to estimate the beta's of i1-i10 directly but by estimating the five characteristics that together define each item (and can take 3 values).
 Gèr Steffens posted on Tuesday, June 12, 2018 - 10:39 am
I tried the following model myself (for only a single class), but I'm not sure this model estimates the thresholds of I1-I18 using the constraints or the other way around.

Model: f by I1-I10*(1);
[I1\$1-I18\$1](b1-b10);
[f@0];
Model constraint:
New(c1-c10);
b1 = c1+c4+c7+c10+c13;
b2 = c3+c5+c8+c10+c13;
b3 = c1+c5+c7+c10+c13;
b4 = c1+c4+c7+c10+c14;
b5 = c3+c6+c9+c11+c15;
b6 = c1+c4+c7+c10+c15;
b7 = c3+c5+c9+c11+c15;
b8 = c1+c4+c7+c12+c13;
b9 = c1+c4+c7+c12+c15;
b10 = c1+c6+c7+c11+c13;

Here c1-c15 represent the properties of the items. So c1 means X1 = 1, c2 that X2 = 2 and c3 that X3 = 3.
 Tihomir Asparouhov posted on Tuesday, June 12, 2018 - 1:13 pm
In the above input you have I18 in the thresholds but in the by statement you only have I1-I10, so I am not sure what to say. I think however you are on the right path here Bi are the thresholds but they are constrained through those equations. Great idea to do this for a much simpler example first. You can even remove the factor until you are comfortable with the threshold structure you are envisioning.
 Gèr Steffens posted on Tuesday, June 12, 2018 - 1:29 pm
That 18 should have been changed to a 10. I now have the following model, with e2-18 defined in a similar manner to b2-b18. I decided to use dummy coding for the properties to simplify.

I ran the basic model (without classes) and the numbers were relatively close to those gotten for LLTM in SAS, with the differences easily explained by different estimators. So I am hoping the following model maintains that:

Model: %overall%
f by I1-I18*(1);
[f@0];
%c#1%
f by I1-I18@1;
f;
[I1\$1-I18\$1] (b1-b18);
%c#2%
f by I1-I18@1;
f;
[I1\$1-I18\$1] (d1-d18);

Model constraint:
New(c1-c10);
New(e1-e10);
b2 = -c2-c3-c5;
b3 = -c5;
b4 = -c9;
b5 = -c2-c4-c6-c7-c10;
b6 = -c10;
b7 = -c2-c3-c6-c7-c10;
b8 = -c8;
b9 = -c8-c10;
b10 = -c4-c7;
b11 = -c3;
b12 = -c2-c3-c6-c10;
b13 = -c1-c3-c5-c7-c9;
b14 = -c7;
b15 = -c1;
b16 = -c2-c4-c6-c8-c10;
b17 = -c1-c4-c5-c8-c9;
b18 = -c6-c9;
 Tihomir Asparouhov posted on Tuesday, June 12, 2018 - 8:50 pm
This looks reasonable and yes - the model expands easily to two classes.