/*Mplus result summary*/ /*This program compares chisquares from two nested models and decides whether one model fits the data better than the other model*/ /*this part is a bit idiosyncratic*/ /*you can modify for your purpose*/ %let sub=math; %let grade=4; /*MODEL1*/ %let filename=C:\&sub &grade model1 edited.out; filename ABC "&filename"; data &sub.&grade; infile ABC length=lg;input @;input @1 eachline $varying200. lg; x1=index(eachline,"Value"); x2=index(eachline,"Degrees of Freedom"); x3=index(eachline,"P-Value"); if x1=11 or x2 =11 or x3=11; run; data &sub.&grade; set &sub.&grade; jun = _n_; if jun < 4; varname=compress(substr(eachline,1,30)); value=substr(eachline,30,25); keep varname value; run; proc transpose data=&sub.&grade out=&sub.&grade.T; id varname; var value;run; data &sub.&grade.T2; retain model; set &sub.&grade.T; ChiSQ=value + 0; DF=0+DegreesofFreedom; P=P_Value+0; model="&sub &grade "; keep model ChiSQ DF P; run; ******************************; /*MODEL2*/ %let filename2=C:\&sub &grade model2 edited.out; filename ABC2 "&filename2"; data B&sub.&grade; infile ABC2 length=lg;input @;input @1 eachline $varying200. lg; x1=index(eachline,"Value"); x2=index(eachline,"Degrees of Freedom"); x3=index(eachline,"P-Value"); if x1=11 or x2 =11 or x3=11; run; data B&sub.&grade; set B&sub.&grade; jun = _n_; if jun < 4; varname=compress(substr(eachline,1,30)); value=substr(eachline,30,25); keep varname value; run; proc transpose data=B&sub.&grade out=B&sub.&grade.T; id varname; var value;run; data B&sub.&grade.T2; retain model2; set B&sub.&grade.T; ChiSQ2=value + 0; DF2=0+DegreesofFreedom; P2=P_Value+0; model2="&sub &grade "; keep model2 ChiSQ2 DF2 P2; run; data result&sub.&grade ; merge &sub.&grade.T2 B&sub.&grade.T2; DIFCHI=abs(CHISQ-CHISQ2); DIFDEG=abs(DF-DF2); PROB=1-probchi(DIFCHI,DIFDEG); run; PROC EXPORT DATA= result&sub.&grade OUTFILE= "C:\Comparison of nested models.xls" DBMS=EXCEL2000 REPLACE; sheet="&sub.&grade"; RUN;