Skip to content

Instantly share code, notes, and snippets.

@MJacobs1985
Created September 29, 2021 19:23
Show Gist options
  • Save MJacobs1985/9b71ff6d31f4029ae5b3aaadd698f136 to your computer and use it in GitHub Desktop.
Save MJacobs1985/9b71ff6d31f4029ae5b3aaadd698f136 to your computer and use it in GitHub Desktop.
Simulations in SAS
%let CovBlock=0.000819;
%let CovPen=0.001557;
%let CovResidual=0.03129;
data sim;
array trtmean{4} _temporary_ (2.1223 2.1046 2.0919 2.0773);
array covpen{4} _temporary_ (0.001361 0.000012 0.002008 0.002880);
do blocknum=12;
do animalnum=2 to 25 by 2;
do sim=1 to 1000 by 1;
do block=1 to blocknum;
rndblock=rand("Normal",0,sqrt(&CovBlock));
do i=1 to dim(trtmean);
TT=i;
Mean=trtmean{i};
do Pen=rand("Uniform"); /* Get unique pen identifiers to mimic original dataset */
if tt=i then rndpen=rand("Normal",0,sqrt(covpen{i}));
do animal=1 to animalnum;
Ind_BW_kg=Mean+rndblock+rndpen+rand("Normal",0,sqrt(&CovResidual));
output;
end;
end;
end;
end;
end;
end;
end;
proc sort data=sim;
by animalnum sim tt;
run;
proc summary data=sim var mean;
class animalnum sim tt;
var ind_bw_kg;
output out=simsummary mean=mean var=variance;
run;
ods graphics / outputfmt=svg;
proc sgpanel data=simsummary;
panelby tt / novarname columns=4 uniscale=colum;
vbox mean / category=animalnum group=tt;
run;
proc univariate data=simsummary;
class animalnum tt;
var mean;
output out=simsumunivariate mean=mean var=variance;
run;
proc sort data=simsumunivariate;
by tt;
proc print data=simsumunivariate;
run;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment