Hi Rick, So I have modified the original code. I have appended the SampSize condition to the original dataset. The problem is, the code is still not looping through the different sample sizes. Could you look at the code below and see if there's still something I should be doing. Thanks! %macro Simulation; proc iml; beta = &Beta.; Cov_Random_Effects = &CovRandom.; Cov_Errors = &CovError.; %do SampSize = 5 %to 10 %by 5; SampSize = &SampSize.; TimeVec = {0, 2, 4, 6}; TimePoints = nrow(TimeVec); NumItemPer = &NumItemPer.; Mean_Errors = 0; Mean_Random_Effects = j(1, nrow(Cov_Random_Effects), 0); Random_Effects = shape( repeat( randnormal( SampSize*NumItemPer, Mean_Random_Effects, Cov_Random_Effects ), 1, TimePoints ), SampSize*TimePoints*NumItemPer, nrow(Cov_Random_Effects) ); Random_Errors = randnormal(SampSize*NumItemPer*TimePoints, Mean_Errors, Cov_Errors); Intercept = J(SampSize*NumItemPer*TimePoints, 1, 1); Time = repeat(TimeVec,SampSize*NumItemPer, 1); XDesign = Intercept||Time; Response = XDesign*Beta + Intercept#Random_Effects[,1] + Time#Random_Effects[,2] + Random_Errors; Subject = repeat(colvec(repeat(T(1:SampSize), 1, TimePoints)), NumItemPer, 1); Iter = repeat(colvec(repeat(T(1:NumItemPer), 1, SampSize*TimePoints)), 1, 1); SampSize = repeat(colvec(repeat(T(SampSize), 1, SampSize*TimePoints*NumItemPer)), 1, 1); Data = Subject||Response||Time||Iter||SampSize; Cname = {"Subject" "Response" "Time" "Iter" "SampSize"}; create SimulatedData from Data[c=Cname]; append from Data; %end; close SimulatedData; quit; proc mixed data = SimulatedData; by SampSize Iter; class Subject; ods output CovParms = cp SolutionF = fixed_effects; model Response = Time / s ddfm = &ddfm.; repeated / subject = Subject; random int Time / subject = subject type = &CovStructure.; run; proc means data = fixed_effects noprint; by SampSize; var Estimate StdErr; class Effect; output out = Means mean(Estimate StdErr) = MeanFE MeanSE; run; %mend Simulation; %let Beta = {16.7611, 0.6602}; %let CovRandom = {1.9211 0, 0 .0228}; %let SampSize = 10; %let CovError = 1.8787; %let NumItemPer = 50; %let ddfm = KR; %let CovStructure = vc; %Simulation;
... View more