I have a data set of pairs of ‘siblings’ from the NLSY which includes MZ twins (RRfull=1), DZ twins and fullsiblings (RRfull=0.5), half siblings (RRfull=0.25) and same sex twins of uncertain zygosity (RRfull=0.75).
I have analysed the data using OpenMX. the estimates are.
For height the OpenMx A,C and E estimates are:
Measure  Additive Genetic  Common Environment  Unique Environment.  Age  Male  D of F  
 A  95% CI  C  95% CI  E  95% CI 



Height (Age ge 18)  0.74  [0.51,0.88]  0.10  [0.01,0.21]  0.16  [0.09,0.28]  0.00  5.7***  4481 
This looks pretty good.
I am an experienced SAS user, but I cannot get proc mixed to return similar estimates from the McArdle 2005 paper.
McArdle, J. J. and C. A. Prescott. 2005. "Mixed Effects Variance Components Models for Biometric Family Analyses." Behavior Genetics 35:63152.
I realize that Mixed Effects Variance Components Models for Biometric Family Analyses is now more likely done in proc hpmixed. I tried to contact these authors, but the senior author is on medical leave and I think the second author has died.
Prescott, C. A., McArdle, J. J., Achorn, D. L., Kaiser, A., & Lapham, S. (2012, October). Applying Project Talent sibling and classmate data to evaluate community and family influences on cognitive abilities. Paper presented at the Annual Meeting of the Society of Multivariate Experimental Psychology, Vancouver, BC, USA.
I can't locate this or similar articles.
I’ve tried many models, but A is nowhere near 0.74. C is usually about twice that of A.
I include a regression model for age and sex as is standard in twin studies.
I am sure my syntax is wrong, but I am not sure where. Could someone please help me and indicate what I got wrong.
Thanks
Gary Marks
Sociology, University of Melbourne
title "Building Relational Weights"; /*trying to follow McArdle and Prescott 2005*/
data sim_rel;
set gen2.Rsib_pairs;
if RRfull in(1,0.75,0.5,0.25);
famid=g1_family_ID;
weightAC=0; weightAM=0; weightAU1=0; weightAU2=0; weightAU3=0; weightAU4=0;
weightSU1=0; weightSU2=0; weightSU3=0; weightSU4=0;
ST=0; /* wherev does Sib and ST appear in proc mixed*/
Sib=1;
if RRfull in(1 0.75) then ST=1;
*MZ Twins;
if RRfull in(1) then do;
weightAC=sqrt(0.5);
weightAM=1;
weightAU1=0;
end;
*Second ID Twins Unclear;
if RRfull=0.75 then do;
weightAC=sqrt(0.75);
weightAU2=sqrt(0.25);
weightSU1=1;
end;
height=sib2_height;male=sib2_male; age=sib2_age;
person=(famid*10)+1;Nper_fam=2;
*FULL SIBLING WEIGHTS;
*First Sibling;
if RRfull=0.5 then do;
weightAC=sqrt(0.5);
weightAU3=sqrt(0.5);
weightSU2=1;
end;
height=sib1_height;male=sib1_male; age=sib1_age;
person=(famid*10)+1;Nper_fam=1;
*HALF SIBLINGS;
*Half Sibling weights Sib1;
if RRfull=0.25 then do;
weightAC=sqrt(0.25);
weightAU4=sqrt(0.75);
weightSU3=1;
end;
*Assign and output values for sibling 1;
height=sib1_height; male=sib1_male; age=sib1_age;
person=(famid*10)+1;Nper_fam=1;
if Nper_fam=1 then do;
weightE1=1; weightE2=0;
end;
output;
*Second ID Twins Unclear;
if RRfull=0.75 then do;
weightAC=sqrt(0.75);
weightAU2=sqrt(0.25);
weightSU1=1;
end;
height=sib2_height;male=sib2_male; age=sib2_age;
person=(famid*10)+1;Nper_fam=2;
*Second Sibling;
if RRfull=0.5 then do;
weightAC=sqrt(0.5);
weightAU3=sqrt(0.5);
weightSU2=1;
end;
*Assign and output values for sibling;
height=sib2_height;male=sib2_male; age=sib2_age;
person=(famid*10)+2;Nper_fam=2;
*Half Sibling weights Sib2;
if RRfull=0.25 then do;
weightAC=sqrt(0.25);
eightAU4=sqrt(0.75);
weightSU3=1;
end;
*Assign and output values for sibling 2;
height=sib2_height;male=sib2_male; age=sib2_age;
person=(famid*10)+2;Nper_fam=2;
*assign weights for common factor E;
if Nper_fam=2 then do; weightE1=0; weightE2=1;
end;
output;
keep RRfull famid person weightAC weightAM weightAU1weightAU4 weightSU1weightSU3
Nper_fam weightE1 weightE2 height male age
Sib ST;
run;
proc print data=sim_rel(obs=19);
where rrfull=0.75;
run;
proc freq data=sim_rel;
tables weightAC weightAM weightAU1weightAU4 SIB ST;
run;
proc mixed data=sim_rel noclprint covtest method=reml;
class famid;
model height=male age/solution DDFM=satterth CHISQ; /*Mean and E Variance*/
random intercept/subject=famid type=VC; /*S Variance*/
random weightAC weightAC weightAU1weightAU4 sib ST weightSU1weightSU3
/subject=famid type=TOEP(1); /*A Variance*/
ods output CovParms = cov1 nobs=obs;
run;
I haven't done genetics by environment interaction analyses in years. The best I can come up with to get started in SAS is actually PROC HPLMIXED. The one example is Computing BLUPs for a Large Number of Subjects. If that example isn't really applicable due to its assumption of known variance and covariance values, then HPMIXED would almost certainly be a better choice than MIXED. And I realize that my answer is pretty vague.
SteveDenham
A search through lexjansen.com might give you some SAS oriented papers that use these references.
SteveDenham
SAS Innovate 2025 is scheduled for May 69 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.
Find more tutorials on the SAS Users YouTube channel.
Ready to levelup your skills? Choose your own adventure.