(*:Mathematica:: V2.1 *) (*:Contex: "exrepeat`" *) (*Title: repeated binary incomplete data *) (*References: Baker, S.G. (1993) Marginal regression for repeated categorical data with outcome subject to nonignorable nonresponse Conway, M. R. (1992) The Analysis of Repeated Categorical Measurements Subject to Nonignorable Nonresponse, Journal of the American Statistical Association, 87, 817-824. data: males and females Woolsen and Clarke (1984) Analysis of categorical incomplete longitudinal data Journal of the Royal Statistical Society, Series A, 147, 87-99. *) (*Keywords: *) (*Requirements: "clm`" *) (*History: 1993 Stuart G. Baker *) Clear[exrepeat, createc, createmargin, model1Q, createx1,createg1, createx2,createg2, createparametername1,createparametername2] (*ages 7 to 9 in 1977*) ytest=Vcat[ Reverse[{{150},{8},{8},{7},{15},{9},{8},{20}}], Reverse[{{38},{1},{3},{11}}], Reverse[{{16},{1},{6},{3}}], Reverse[{{42},{3},{2},{13}}], Reverse[{{45},{7}}], Reverse[{{33},{4}}], Reverse[{{55},{14}}], Reverse[{{154},{2},{13},{6},{14},{6},{19},{21}}], Reverse[{{25},{1},{3},{11}}], Reverse[{{16},{0},{3},{4}}], Reverse[{{47},{1},{4},{8}}], Reverse[{{47},{7}}], Reverse[{{23},{5}}], Reverse[{{39},{13}}]]; (*ages 11-13 in 1977 -males then females*) (*age category is adjusted*) y=Vcat[ Reverse[{{119}, {13}, {8}, {11}, {7}, {4}, {3}, {16}}], Reverse[{{42}, {4}, {4}, {13}}], Reverse[{{14}, {1}, {2}, {4}}], Reverse[{{18}, {3}, {3}, {1}}], Reverse[{{82}, {24}}], Reverse[{{23}, {6}}], Reverse[{{37}, {14}}], Reverse[{{129}, {6}, {7}, {7}, {8}, {2}, {9}, {14}}], Reverse[{{36}, {4}, {9}, {13}}], Reverse[{{31}, {2}, {4}, {6}}], Reverse[{{19}, {2}, {1}, {2}}], Reverse[{{58}, {37}}], Reverse[{{21}, {1}}], Reverse[{{23}, {10}}]]; SetOptions[NGLR,ShowProgressNGLR->False,ConvergenceGoalNGLR->.001] mod1={"CONST","CS+COV","MCAR"}; mod2={"CONST+COV","CS+COV","MCAR"}; mod3={"CONST","NS+COV","MCAR"}; mod4={"CONST+COV","NS+COV","MCAR"}; mod11={"CONST","CS+COV","LOR"}; mod12={"CONST+COV","CS+COV","LOR"}; mod13={"CONST","NS+COV","LOR"}; mod14={"CONST+COV","NS+COV","LOR"}; mod21={"CONST","CS+COV","LUR"}; mod22={"CONST+COV","CS+COV","LUR"}; mod23={"CONST","NS+COV","LUR"}; mod24={"CONST+COV","NS+COV","LUR"}; (*-------------additive effects -----*) mod31={"CONST","CS+COV","MCAR+COV"}; mod32={"CONST+COV","CS+COV","MCAR+COV"}; mod33={"CONST","NS+COV","MCAR+COV"}; mod34={"CONST+COV","NS+COV","MCAR+COV"}; mod41={"CONST","CS+COV","LOR+COV"}; mod42={"CONST+COV","CS+COV","LOR+COV"}; mod43={"CONST","NS+COV","LOR+COV"}; mod44={"CONST+COV","NS+COV","LOR+COV"}; mod51={"CONST","CS+COV","LUR+COV"}; mod52={"CONST+COV","CS+COV","LUR+COV"}; mod53={"CONST","NS+COV","LUR+COV"}; mod54={"CONST+COV","NS+COV","LUR+COV"}; mod61={"CONST","CS+COV","LOR+LUR"}; mod62={"CONST+COV","CS+COV","LOR+LUR"}; mod63={"CONST","NS+COV","LOR+LUR"}; mod64={"CONST+COV","NS+COV","LOR+LUR"}; mod71={"CONST","CS+COV","LOR+LUR+COV"}; mod72={"CONST+COV","CS+COV","LOR+LUR+COV"}; mod73={"CONST","NS+COV","LOR+LUR+COV"}; mod74={"CONST+COV","NS+COV","LOR+LUR+COV"}; (*---------interaction with covariate---*) mod81={"CONST","CS+COV","MCAR*C"}; mod82={"CONST+COV","CS+COV","MCAR*C"}; mod83={"CONST","NS+COV","MCAR*C"}; mod84={"CONST+COV","NS+COV","MCAR*C"}; mod91={"CONST","CS+COV","LOR*C"}; mod92={"CONST+COV","CS+COV","LOR*C"}; mod93={"CONST","NS+COV","LOR*C"}; mod94={"CONST+COV","NS+COV","LOR*C"}; mod101={"CONST","CS+COV","LUR*C"}; mod102={"CONST+COV","CS+COV","LUR*C"}; mod103={"CONST","NS+COV","LUR*C"}; mod104={"CONST+COV","NS+COV","LUR*C"}; mod111={"CONST","CS+COV","LOR*LUR"}; mod112={"CONST+COV","CS+COV","LOR*LUR"}; mod113={"CONST","NS+COV","LOR*LUR"}; mod114={"CONST+COV","NS+COV","LOR*LUR"}; (*--------------------same value for LOR LUR-----*) (* mod121={"CONST","CS+COV","LORS"}; mod122={"CONST+COV","CS+COV","LORS"}; mod123={"CONST","NS+COV","LORS"}; mod124={"CONST+COV","NS+COV","LORS"}; mod131={"CONST","CS+COV","LURS"}; mod132={"CONST+COV","CS+COV","LURS"}; mod133={"CONST","NS+COV","LURS"}; mod134={"CONST+COV","NS+COV","LURS"}; mod141={"CONST","CS+COV","LORS+LURS"}; mod142={"CONST+COV","CS+COV","LORS+LURS"}; mod143={"CONST","NS+COV","LORS+LURS"}; mod144={"CONST+COV","NS+COV","LORS+LURS"}; mod151={"CONST","CS+COV","LORS+COV"}; mod152={"CONST+COV","CS+COV","LORS+COV"}; mod153={"CONST","NS+COV","LORS+COV"}; mod154={"CONST+COV","NS+COV","LORS+COV"}; mod161={"CONST","CS+COV","LURS+COV"}; mod162={"CONST+COV","CS+COV","LURS+COV"}; mod163={"CONST","NS+COV","LURS+COV"}; mod164={"CONST+COV","NS+COV","LURS+COV"}; mod171={"CONST","CS+COV","LORS+LURS+COV"}; mod172={"CONST+COV","CS+COV","LORS+LURS+COV"}; mod173={"CONST","NS+COV","LORS+LURS+COV"}; mod174={"CONST+COV","NS+COV","LORS+LURS+COV"}; mod181={"CONST","CS+COV","(LOR+LUR)S+COV"}; mod182={"CONST+COV","CS+COV","(LOR+LUR)S+COV"}; mod183={"CONST","NS+COV","(LOR+LUR)S+COV"}; mod184={"CONST+COV","NS+COV","(LOR+LUR)S+COV"}; *) mod121={"LINEAR","CS+COV","LORS"}; mod122={"LINEAR+COV","CS+COV","LORS"}; mod123={"LINEAR","NS+COV","LORS"}; mod124={"LINEAR+COV","NS+COV","LORS"}; mod131={"LINEAR","CS+COV","LURS"}; mod132={"LINEAR+COV","CS+COV","LURS"}; mod133={"LINEAR","NS+COV","LURS"}; mod134={"LINEAR+COV","NS+COV","LURS"}; mod141={"LINEAR","CS+COV","LORS+LURS"}; mod142={"LINEAR+COV","CS+COV","LORS+LURS"}; mod143={"LINEAR","NS+COV","LORS+LURS"}; mod144={"LINEAR+COV","NS+COV","LORS+LURS"}; mod151={"LINEAR","CS+COV","LORS+COV"}; mod152={"LINEAR+COV","CS+COV","LORS+COV"}; mod153={"LINEAR","NS+COV","LORS+COV"}; mod154={"LINEAR+COV","NS+COV","LORS+COV"}; mod161={"LINEAR","CS+COV","LURS+COV"}; mod162={"LINEAR+COV","CS+COV","LURS+COV"}; mod163={"LINEAR","NS+COV","LURS+COV"}; mod164={"LINEAR+COV","NS+COV","LURS+COV"}; mod171={"LINEAR","CS+COV","LORS+LURS+COV"}; mod172={"LINEAR+COV","CS+COV","LORS+LURS+COV"}; mod173={"LINEAR","NS+COV","LORS+LURS+COV"}; mod174={"LINEAR+COV","NS+COV","LORS+LURS+COV"}; mod181={"LINEAR","CS+COV","(LOR+LUR)S+COV"}; mod182={"LINEAR+COV","CS+COV","(LOR+LUR)S+COV"}; mod183={"LINEAR","NS+COV","(LOR+LUR)S+COV"}; mod184={"LINEAR+COV","NS+COV","(LOR+LUR)S+COV"}; mod191={"LINEAR","CS+COV","LORS*LURS"}; mod192={"LINEAR+COV","CS+COV","LORS*LURS"}; mod193={"LINEAR","NS+COV","LORS*LURS"}; mod194={"LINEAR+COV","NS+COV","LORS*LURS"}; mod201={"LINEAR","CS+COV","LORS*LURS+C"}; mod202={"LINEAR+COV","CS+COV","LORS*LURS+C"}; mod203={"LINEAR","NS+COV","LORS*LURS+C"}; mod204={"LINEAR+COV","NS+COV","LORS*LURS+C"}; mod211={"CONST","CS+COV","LORS*LURS"}; mod212={"CONST+COV","CS+COV","LORS*LURS"}; mod213={"CONST","NS+COV","LORS*LURS"}; mod214={"CONST+COV","NS+COV","LORS*LURS"}; mod221={"CONST","CS+COV","LORS*LURS+C"}; mod222={"CONST+COV","CS+COV","LORS*LURS+C"}; mod223={"CONST","NS+COV","LORS*LURS+C"}; mod224={"CONST+COV","NS+COV","LORS*LURS+C"}; mod251={"LINEAR","CS+COV","LORST+COV"}; mod252={"LINEAR+COV","CS+COV","LORST+COV"}; mod253={"LINEAR","NS+COV","LORST+COV"}; mod254={"LINEAR+COV","NS+COV","LORST+COV"}; mod261={"LINEAR","CS+COV","LURST+COV"}; mod262={"LINEAR+COV","CS+COV","LURST+COV"}; mod263={"LINEAR","NS+COV","LURST+COV"}; mod264={"LINEAR+COV","NS+COV","LURST+COV"}; mod={mod1, mod2, mod3, mod4, mod11,mod12,mod13,mod14, mod21,mod22,mod23,mod24, mod31,mod32,mod33,mod34, mod41,mod42,mod43,mod44, mod51,mod52,mod53,mod54, mod61,mod62,mod63,mod64, mod71,mod72,mod73,mod74, mod81,mod82,mod83,mod84, mod91,mod92,mod93,mod94, mod101,mod102,mod103,mod104, mod111,mod112,mod113,mod114, mod121,mod122,mod123,mod124, mod131,mod132,mod133,mod134, mod141,mod142,mod143,mod144, mod151,mod152,mod153,mod154, mod161,mod162,mod163,mod164, mod171,mod172,mod173,mod174, mod181,mod182,mod183,mod184, mod191,mod192,mod193,mod194, mod201,mod202,mod203,mod204, mod211,mod212,mod213,mod214, mod221,mod222,mod223,mod224, mod251,mod252,mod253,mod254, mod261,mod262,mod263,mod264}; exrepeat[y_,modelname_]:= Module[{q1,w1,g1,h1,z1,x1, func1,m1,m1a,components1,nv1,ncore1,arg1, q2,w2,g2,h2,z2,x2, func2,m2,x2a,x2b, nv,ncore,n,q,w,g,h,z,x, components,mstepfunc,msteparg, parametername,rationame, rmata,rmatb, c0,c3,c2,c1,c23,c13,c12,c123, c,model,ratio,name}, (*model marginal homogeneity*) (*order of probablity vector =columns in g1*) (*a,b,c,p,q,r,pi*) (*marginal probabilities=*) (*a=1++; b=+1+; c=++1; p=1+1; q=+11; r=11+; pi=111*) q1=Log; (*the factor of 7 relates to 7 missing data strata*) (*multiply by 2 for four groups*) w1=J[14,1] ~Dir~ Transpose[{{0,0,0,0,0,0,0,1}}]; g1=createg1[]; h1= Exp[#2]/(1+Exp[#2])&; z1=J[14,1]; x1=createx1[modelname]; func1=NGLR; m1a={{1,1,0,0,1,1,0,0}, {0,0,1,1,0,0,1,1}, {1,0,1,0,1,0,1,0}, {0,1,0,1,0,1,0,1}, {1,1,1,1,0,0,0,0}, {0,0,0,0,1,1,1,1}, {1,1,0,0,0,0,0,0}, {0,0,1,1,1,1,1,1}, {1,0,1,0,0,0,0,0}, {0,1,0,1,1,1,1,1}, {1,0,0,0,1,0,0,0}, {0,1,1,1,0,1,1,1}, {1,0,0,0,0,0,0,0}, {0,1,1,1,1,1,1,1}}; m1=Dir[J[1,7],Id[2],m1a]; nv1=J[112,1]; ncore1={{1}}; components1={{nv1,ncore1},{q1},{w1},{g1},{h1},{z1},{x1}}; arg1={m1,components1}; (*--model for missing data--*) q2=Identity; w2=J[112,1,0]; g2=createg2[]; h2=#2 #1 - Log[1+Exp[#2]]&; z2=J[40,1] ~Dir~ {{1},{0}}; x2a=createx2a[modelname]; x2= x2a ~Dir~ J[2,1]; func2=NLR; m2=Transpose[g2]; arg2={m2,x2a}; (*combination*) ncore=(Id[2] ~Dir~ J[1,26]).y; nv=ncore ~Dir~ J[56,1]; n={nv,ncore}; q={q1,q2}; w={w1,w2}; g={g1,g2}; h={h1,h2}; z={z1,z2}; x={x1,x2}; c=createc[]; components={n,q,w,g,h,z,x}; mstepfunc={func1,func2}; msteparg={arg1,arg2}; model={components,mstepfunc,msteparg}; ratio="None"; parametername=Join[createparametername1[modelname], createparametername2[modelname]]; rationame=Automatic; name={parametername,rationame}; Return[{c,model,ratio,name}]]/;MemberQ[mod,modelname] (*---------------------composite link matrix-----------------------*) createc[]:= Module[{cppp,cppa,cpap,capp,cpaa,capa,caap}, cppp=Id[8]; cppa=Dir[J[1,2],Id[4]]; cpap=Dir[Id[2],J[1,2],Id[2]]; capp=Dir[Id[4],J[1,2]]; cpaa=Dir[J[1,4],Id[2]]; capa=Dir[J[1,2],Id[2],J[1,2]]; caap=Dir[Id[2],J[1,4]]; c=Id[2] ~Dir~ BlockDiag[cppp,cppa,cpap,capp,cpaa,capa,caap]; Return[c]] (*-------------createx1---------------------*) createmargin[modelname_]:= Module[{age1,age2}, age1={{12},{14},{16}}; age2=age1^2; margin=Switch[modelname[[1]], "CONST", J[3,1], "CONST+COV", J[3,1], "LINEAR", Hcat[J[3,1],age1], "LINEAR+COV", Hcat[J[3,1],age1], "QUAD", Hcat[J[3,1],age1,age2], "QUAD+COV", Hcat[J[3,1],age1,age2]]; Return[margin]] model1Q[modelname_]:= If[ modelname[[1]]=="QUAD" || modelname[[1]] == "LINEAR" || modelname[[1]]=="CONST", True, False] model1CQ[modelname_]:= If[ modelname[[1]]=="QUAD+COV" || modelname[[1]] == "LINEAR+COV" || modelname[[1]]=="CONST+COV", True, False] (*--------------NS or CS-------*) createx1[modelname_]:= Module[{margin,interior}, margin=createmargin[modelname]; interior=Id[4]; x1=J[2,1] ~Dir~ BlockDiag[margin,interior]; Return[x1]] /; (model1Q[modelname] && modelname[[2]] =="NS") createx1[modelname_]:= Module[{margin,interior}, margin=createmargin[modelname]; interior= {{1,0},{1,0},{1,0},{0,1}}; x1=J[2,1] ~Dir~ BlockDiag[margin,interior]; Return[x1]] /; (model1Q[modelname] && modelname[[2]] =="CS") (*-------------NS+COV or CS+COV----*) createx1[modelname_]:= Module[{margin,interior,x1a,x1b}, margin=createmargin[modelname]; interior= {{1,0},{1,0},{1,0},{0,1}}; x1a=J[2,1] ~Dir~ BlockDiag[margin,interior]; x1b=Vcat[J[7,1,0],J[3,1,0],J[4,1]]; x1=x1a ~Hcat ~ x1b; Return[x1]] /; (model1Q[modelname] && modelname[[2]] =="CS+COV" ) createx1[modelname_]:= Module[{margin,interior,x1a,x1b}, margin=createmargin[modelname]; interior=Id[4]; x1a=J[2,1] ~Dir~ BlockDiag[margin,interior]; x1b=Vcat[J[7,1,0],J[3,1,0],J[4,1]]; x1=x1a ~Hcat ~ x1b; Return[x1]] /; (model1Q[modelname] && modelname[[2]] =="NS+COV") (*---+COV--*) createx1[modelname_]:= Module[{margin,interior,sex,x1a,x1b}, margin=createmargin[modelname]; interior= {{1,0},{1,0},{1,0},{0,1}}; sex=J[3,1]; x1a=J[2,1] ~Dir~ BlockDiag[margin,interior]; x1b=J[7,2,0] ~Vcat~ BlockDiag[sex,J[4,1]]; x1=x1a ~Hcat ~ x1b; Return[x1]] /; ( model1CQ[modelname] && modelname[[2]] =="CS+COV" ) createx1[modelname_]:= Module[{margin,interior,sex,x1a,x1b}, margin=createmargin[modelname]; interior=Id[4]; sex=J[3,1]; x1a=J[2,1] ~Dir~ BlockDiag[margin,interior]; x1b=J[7,2,0] ~Vcat~ BlockDiag[sex,J[4,1]]; x1=x1a ~Hcat ~ x1b; Return[x1]] /; (model1CQ[modelname] && modelname[[2]] =="NS+COV" ) (*-------createg1----------*) createg1[]:= Module[{g1a}, g1a={{0,0,0, 0,0,0, 1}, {0,0,0, 0,1,0, -1}, {0,0,0, 1,0,0, -1}, {0,0,1, -1,-1,0, 1}, {0,0,0, 0,0,1, -1}, {0,1,0, 0,-1,-1, 1}, {1,0,0, -1,0,-1, 1}, {-1,-1,-1, 1,1,1, -1}}; g1=Dir[Id[2],J[7,1],g1a]; Return[g1]] (*--------------createx2a------------*) createx2a[modelname_]:= Module[{base,mainp,mainl, prev,last,add, both, MCARcore,LORScore,LURScore, LORcore,LURcore,LORADDcore,LLBOTHcore,COV,Time, x2a}, base=J[4,1]; mainp={{1},{0},{1},{0}}; mainl={{1},{1},{0},{0}}; prev=Hcat[base,mainp]; last=Hcat[base,mainl]; add=Hcat[base,mainp,mainl]; both=Hcat[base,mainp,mainl,mainp mainl]; MCARcore= J[2,1] ~Dir~ BlockDiag[J[2,1],J[4,1],J[4,1],J[4,1],J[2,1],J[4,1]]; LORcore= J[2,1] ~Dir~ BlockDiag[J[2,1],prev,prev,prev,J[2,1],prev]; LURcore= J[2,1] ~Dir~ BlockDiag[J[2,1],last,last,last,J[2,1],last]; LLADDcore= J[2,1] ~Dir~ BlockDiag[J[2,1],add,add,add,J[2,1],add]; LLBOTHcore= J[2,1] ~Dir~ BlockDiag[J[2,1],both,both,both,J[2,1],both]; COV= Dir[{{0},{1}},J[20,1]]; LORScore= J[2,1] ~Dir~ Vcat[J[2,1,0],mainp,mainp,mainp,J[2,1,0],mainp]; LURScore= J[2,1] ~Dir~ Vcat[J[2,1,0],mainl,mainl,mainl,J[2,1,0],mainl]; Time= J[2,1] ~Dir~ Vcat[J[2,1,1],J[4,1,2],J[4,1,3],J[4,1,3],J[2,1,2],J[4,1,3]]; x2a=Switch[modelname[[3]], "MCAR", MCARcore, "LORS", Hcat[MCARcore,LORScore], "LURS", Hcat[MCARcore,LURScore], "LOR", LORcore, "LUR", LURcore, "LORS+LURS", Hcat[MCARcore,LORScore,LURScore], "LOR+LUR", LLADDcore, "MCAR+COV", Hcat[MCARcore,COV], "LORS+COV", Hcat[MCARcore,LORScore,COV], "LURS+COV", Hcat[MCARcore,LURScore,COV], "LORST+COV", Hcat[MCARcore,LORScore,Time, COV], "LURST+COV", Hcat[MCARcore,LURScore,Time, COV], "LORS*LURS", Hcat[MCARcore,LORScore,LURScore, LORScore LURScore], "LORS*LURS+C", Hcat[MCARcore,LORScore,LURScore, LORScore LURScore,COV], "LOR+COV", Hcat[LORcore,COV], "LUR+COV", Hcat[LURcore,COV], "LORS+LURS+COV", Hcat[MCARcore,LORScore,LURScore,COV], "(LOR+LUR)S+COV",Hcat[MCARcore,LORScore+LURScore,LURScore,COV], "LOR+LUR+COV", Hcat[LLADDcore,COV], "MCAR*C", Hcat[MCARcore,MCARcore ~Hdir~ COV], "LOR*C", Hcat[LORcore, LORcore ~Hdir~ COV], "LUR*C", Hcat[LURcore, LURcore ~Hdir~ COV], "LOR*LUR", LLBOTHcore]; Return[x2a]] (*----------------------createg2-------------------------------------*) createg2[]:= Module[{ge1,ge2,ge3,ge12,ge13,ge23, m,p, p1col,m1col,p2col,m2col,p3col,m3col, p12col,m12col,p13col,m13col,p23col,m23col, zzcol,zzzcol, gppp,gppm,gpmp,gpmm,gmpp,gmpm,gmmp,g}, ge1=Dir[J[4,1],Id[2]]; ge2=Dir[J[2,1],Id[2],J[2,1]]; ge3=Dir[Id[2],J[4,1]]; ge12=Dir[J[2,1],Id[4]]; ge13=Dir[Id[2],J[2,1],Id[2]]; ge23=Dir[Id[4],J[2,1]]; a={{1,0}}; (*absent*) p={{0,1}}; (*present*) p1col=ge1 ~Dir~ p; a1col=ge1 ~Dir~ a; p2col=ge2 ~Dir~ p; a2col=ge2 ~Dir~ a; p3col=ge3 ~Dir~ p; a3col=ge3 ~Dir~ a; p12col=ge12 ~Dir~ p; a12col=ge12 ~Dir~ a; p13col=ge13 ~Dir~ p; a13col=ge13 ~Dir~ a; p23col=ge23 ~Dir~ p; a23col=ge23 ~Dir~ a; zzcol=J[8,4,0]; zzzcol=J[8,8,0]; (*A-2, PA-2, PPA-2, PAA-2, AA-2, APA-2 *) gppp=Hcat[p1col,p12col,p23col,zzzcol,zzcol,zzzcol]; gppa=Hcat[p1col,p12col,a23col,zzzcol,zzcol,zzzcol]; gpap=Hcat[p1col,a12col,zzzcol,p13col,zzcol,zzzcol]; gapp=Hcat[a1col,zzzcol,zzzcol,zzzcol,p2col,p23col]; gpaa=Hcat[p1col,a12col,zzzcol,a13col,zzcol,zzzcol]; gapa=Hcat[a1col,zzzcol,zzzcol,zzzcol,p2col,a23col]; gaap=Hcat[a1col,zzzcol,zzzcol,zzzcol,a2col,zzzcol]; g=Vcat[gppp, gppa,gpap,gapp, gpaa,gapa,gaap]; g2=Id[2] ~Dir~ g; Return[g2]] (*-------------createparaaetername1------------------------*) createparametername1[modelname_]:= Module[{margin,interior,add,par}, margin=Switch[modelname[[1]], "CONST", {"alpha-CONST"}, "CONST+COV", {"alpha-CONST"}, "LINEAR", {"alpha-CONST", "alpha-LINEAR"}, "LINEAR+COV", {"alpha-CONST", "alpha-LINEAR"}, "QUAD", {"alpha-CONST", "alpha-LINEAR", "alpha-QUAD"}, "QUAD+COV", {"alpha-CONST", "alpha-LINEAR", "alpha-QUAD"}]; interior=Switch[modelname[[2]], "NS", {"beta-NS,13","beta-NS,12","beta-NS,23","beta-123"}, "CS", {"beta-CS", "beta-123"}, "NS+COV", {"beta-NS,13","beta-NS,12","beta-NS,23","beta-123"}, "CS+COV", {"beta-CS", "beta-123"}]; margincov=Switch[modelname[[1]], "CONST", {}, "CONST+COV", {"alpha-COV"}, "LINEAR", {}, "LINEAR+COV", {"alpha-COV"}, "QUAD", {}, "QUAD+COV", {"alpha-COV"}]; interiorcov=Switch[modelname[[2]], "NS", {}, "CS", {}, "NS+COV", {"beta-COV"}, "CS+COV", {"beta-COV"}]; par=Join[margin,interior,margincov,interiorcov]; Return[par]] (*-----------createparametername2--------*) createparametername2[modelname_]:= Module[{MCARcore,LORcore,LURcore,LLLADcore, LLBOTHcore,COV,par2}, MCARcore= {"phi-A", "phi-PA", "phi-PPA", "phi-PAA", "phi-AA", "phi-APA"}; LORcore= {"phi-A", "phi-PA", "phi-PA-LOR", "phi-PPA", "phi-PPA-LOR", "phi-PAA", "phi-PAA-LOR", "phi-AA", "phi-APA", "phi-APA-LOR"}; LURcore= {"phi-A", "phi-PA", "phi-PA-LUR", "phi-PPA", "phi-PPA-LUR", "phi-PAA", "phi-PAA-LUR", "phi-AA", "phi-APA", "phi-APA-LUR"}; LLADDcore={"phi-A", "phi-PA", "phi-PA-LOR", "phi-PA-LUR", "phi-PP", "phi-PPA-LOR", "phi-PPA-LUR", "phi-PAA", "phi-PAA-LOR", "phi-PAA-LUR", "phi-AA", "phi-APA", "phi-APA-LOR", "phi-APA-LUR"}; LLBOTHcore={"phi-A", "phi-PA", "phi-PA-LOR", "phi-PA-LUR", "phi-PA-LOR*LUR", "phi-PP", "phi-PPA-LOR", "phi-PPA-LUR", "phi-PPA-LOR*LUR", "phi-PAA", "phi-PAA-LOR", "phi-PAA-LUR", "phi-PAA-LOR*LUR", "phi-AA", "phi-APA", "phi-APA-LOR", "phi-APA-LUR", "phi-APA-LOR*LUR"}; COV={"phi-COV"}; par2=Switch[modelname[[3]], "MCAR", MCARcore, "LOR", LORcore, "LUR", LURcore, "LORS", Join[MCARcore,{"phi-LOR"}], "LURS", Join[MCARcore,{"phi-LUR"}], "LORS+LURS", Join[MCARcore,{"phi-LOR", "phi-LUR"}], "MCAR+COV", Join[MCARcore,COV], "LORS+COV", Join[MCARcore,{"phi-LOR", "phi-COV"}], "LURS+COV", Join[MCARcore,{"phi-LUR", "phi-COV"}], "LORS+LURS+COV", Join[MCARcore,{"phi-LOR", "phi-LUR", "phi-COV"}], "(LOR+LUR)S+COV",Join[MCARcore,{"phi-LOUR", "phi-LUR", "phi-COV"}], "LORS*LURS", Join[MCARcore,{"phi-LOR", "phi-LOR", "phi-LORLUR"}], "LORS*LURS+C", Join[MCARcore,{"phi-LOR", "phi-LOR", "phi-LORLUR", "phi-COV"}], "LOR+COV", Join[LORcore,COV], "LUR+COV", Join[LURcore,COV], "LORST+COV", Join[MCARcore,{"phi-LOR", "phi-T", "phi-COV"}], "LURST+COV", Join[MCARcore,{"phi-LUR", "phi-T", "phi-COV"}], "LOR+LUR", LLADDcore, "LOR+LUR+COV", Join[LLADDcore,COV], "MCAR*C", Join[MCARcore,MCARcore], "LOR*C", Join[LORcore, LORcore], "LUR*C", Join[LURcore, LURcore], "LOR*LUR", LLBOTHcore]; Return[par2]] all1[y_]:= Module[{}, Print[CLMFit[y,{exrepeat,#},ShowProgress->False,MaxIterationsEM->400]]& /@ {mod1,mod11,mod21,mod31,mod41,mod51,mod61,mod71,mod81,mod91,mod101,mod111}] all2[y_]:= Module[{}, Print[CLMFit[y,{exrepeat,#},ShowProgress->False,MaxIterationsEM->400]]& /@ {mod2,mod12,mod22,mod32,mod42,mod52,mod62,mod72,mod82,mod92,mod102,mod112}] all3[y_]:= Module[{}, Print[CLMFit[y,{exrepeat,#},ShowProgress->False,MaxIterationsEM->400]]& /@ {mod3,mod13,mod23,mod33,mod43,mod53,mod63,mod73,mod83,mod93,mod103,mod113}] all4[y_]:= Module[{}, Print[CLMFit[y,{exrepeat,#},ShowProgress->False,MaxIterationsEM->400]]& /@ {mod4,mod14,mod24,mod34,mod44,mod54,mod64,mod74,mod84,mod94,mod104,mod114}] allx[y_]:= Module[{}, Print[CLMFit[y,{exrepeat,#},ShowProgress->False,MaxIterationsEM->400]]& /@ {mod121,mod122,mod123,mod124, mod131,mod132,mod133,mod134, mod141,mod142,mod143,mod144, mod151,mod152,mod153,mod154, mod161,mod162,mod163,mod164, mod171,mod172,mod173,mod174, mod181,mod182,mod183,mod184}] allxx[y_]:= Module[{}, Print[CLMFit[y,{exrepeat,#},ShowProgress->False,MaxIterationsEM->400]]& /@ {mod191,mod192,mod193,mod194, mod201,mod202,mod203,mod204, mod211,mod212,mod213,mod214, mod221,mod222,mod223,mod224}]