Code fragment that shows how to plot interactions terms in a more meaningful way. ---------------------------- To plot interactions easily, use this code fragment as an example. It plots odds ratios for age separately for men and women because there is an interaction.
The outline is: 1. Estimate the model 2. Use lincom to estimate odds ratios at interesting levels of the covariates 3. Store the results in a matrix. 4. Plot the result using lrplot.
Code fragment -------------------------------- *This is the model that we will use *Nb! Need to use logit, not logistic. *Because we need coefficients, not odds ratios. xi: logit response i.agek6 i.region i.gender i.agek6*i.gender
*Doing lrplot of this modell won't show the interactions *in a very meaningful way.
matrix interac=J(10,3,0) matname interac or ci1 ci2 , col(.) explicit
*Loop over the age categories tokenize "1 2 3 4 5" local i=1 while "`1'" ~= "" {
*Get the age labels from the variable labels local age : word `1' of `agelab' local agelab : label(agek6) `i'
*This gets the odds ratios for males lincom Ialder_`1' + 0*IaXg_`1'_2 + 0*Igend_2 *store it local j = `i' matrix interac[`j',1]=exp(`r(estimate)') matrix interac[`j',2]=exp(`r(estimate)'-invnorm(0.975)*`r(se)') matrix interac[`j',3]=exp(`r(estimate)'+invnorm(0.975)*`r(se)')
*Change the names, put an M in front matname interac M`agelab', row(`j') explicit
*This gets the odds ratios for females local j2 = `j'+5 lincom Ialder_`1' + 1*IaXg_`1'_2 + 1*Igend_2 matrix interac[`j2',1]=exp(`r(estimate)') matrix interac[`j2',2]=exp(`r(estimate)'-invnorm(0.975)*`r(se)') matrix interac[`j2',3]=exp(`r(estimate)'+invnorm(0.975)*`r(se)')
*Change the names, put an F in front matname interac F`agelab', row(`j2') explicit
macro shift 1 local i = `i'+1
} *Now, get the "ordinary" odds ratios xi: logit response i.region i.gender i.agek6 i.agek6*i.gender lrmatx matrix model=r(or),r(ci) *Now dump the interaction terms *and change them for the ones we have computed. mat model=model[1,1...]\interac mat list model lrplot , matrix(interac) legend --------------------------------
Examples --------
Running the above code fragment would give an output as shown below. Plotting it would make it even more comprehensible.
. mat list model
model[11,3] OR CI1 CI2 Region 1.4269215 1.3292502 1.5317695 M20- .92925425 .78572297 1.099005 M30- 3.542234 2.8746373 4.3648713 M40- 4.4545944 3.4491897 5.7530647 M50- 6.9087427 4.8870581 9.7667603 M60- 17.627967 9.9837942 31.124962 K20- 1.4874388 1.257866 1.7589109 K30- 7.5201636 5.3426979 10.585075 K40- 8.0254746 5.5639844 11.575921 K50- 9.7568924 6.4523842 14.753763 K60- 18.68952 10.637149 32.837572
See also -------- @lrplot@ to plot a model with or without interactions @lrmatx@ to store coefficients as matrices for manipulation.
Author ------- Jan Brogger, University of Bergen, Norway jan.brogger@@med.uib.no
Shameless plug :) -------------- I am looking for internship & residency in internal medicine/pulmonary medicine US/EU. Am doing PhD in respiratory epidemiology now.