Calculating Cross/Within twin correlations

3 replies [Last post]
DanielC's picture
Joined: 10/30/2012

Hi, I'm very new to openMX and I'm trying to analyse some data using ACE models. I have several data (psychological scales) about twins, and I want to calculate cross-twin and within-twin correlations between these scales. I have found such calculations are very common in papers such as this one:

and they all mention something like this:

"To estimate MZ and DZ twin correlations within and across
each of the 5 OC symptom dimensions, the data were fitted to a
constrained correlational model in Mx. The MZ and DZ correlations
for each of the symptom subscales (ie, the cross-twin withinsubscale
correlation) provided an indication of the relative contribution
of genetic and environmental factors to the liability of
each dimension (eg, checking)."

I understand this I can't just calculate the regular correlation, since the pairs of twins are inter-changeable within them, so this is more like an intra-class correlation.

I've been checking a lot of openMX documentation, but I can't find how to exactly do it. I understand I need to add constrains to the model, but I don't know how.

Any example or guiding light will be very appreciated.

Afterwards I'll try to fit an ACE model to the data. The univariate example found in the openMX documentation is very clear so I hope I won't have trouble, but I might have more trouble when I try a bivariate one.

Thanks a lot in advance!

neale's picture
Joined: 07/31/2009
Equate means & variances T1=T2

Essentially you need to fit a saturated model in which the variances and means of twin 1 are equal to those of twin 2. In the multivariate case, one would also constrain the within-person covariances to be equal.

There's an ordinal data example here.

and I think a continuous one here

DanielC's picture
Joined: 10/30/2012
Thank you very much for your

Thank you very much for your reply, it has been very helpful. I have been using the multivariate provided examples, adapted to the bivariate case, with 2 continuous variables (for now, I might convert them to ordinal in the future)

I'm providing the resulting code, that first fits a saturated bivariate model (with the mentioned restrictions for twins), then a Cholesky ACE, then an Independent Pathway ACE, and finally a Common Pathway ACE. One thing I noticed is that in the bivariate case, the Cholesky ACE actually has fewer parameters (11) than the rest (18, 14, 13, respectively).

So I understand the correlations I desired in the fist place can be calculated from the covariance matrix provided here:


About the rest of the models, in the bivariate case, which one is the most commonly used? I find it easier to interpret the Common Pathway one, but the Cholesky has fewer parameters. I just find difficult to interpret the path coefficients that are shared among the 2 variables. Is there any other alternative?

Thanks again for all your help! Cheers!

BivariateTwinSaturated_MatrixRawBESSONS_V2.R 14.89 KB
neale's picture
Joined: 07/31/2009
More parameters than saturated model = bad thing

Although the ACE "triple Cholesky" model is not entirely saturated (Cholesky matrices which span the entire twin pair, 2*nVar x 2*nVar, and separately for each zygosity would be), it is about as saturated as any ACE model can get. Therefore there's a bit of concern as to whether the bivariate common pathway model is identified when it has more parameters but is essentially a member of the ACE family of models.

It does have a constraint on the latent variance, so we use 2 parameters up there. If the two loadings are free, that's another 2, then there are 3 each for the residual variance components. This adds up to 10. However, there are only 6 'distinct' statistics in the Covariance matrix of MZ's and only the cross-twin statistics differ in the DZ's (the symmetric 2x2 block), which gives another 3, making a total of 9. So I have a hard time seeing how the common pathway model would be identified in the bivariate case without a constraint such as fixing the factor loadings to be equal, which may limit the interpretability.

Possibly, you are looking for a way to interpret the Cholesky estimates? Most important is to calculate the product with the transpose (say lower matrix, a, of path coefficients generates matrix A with the algebra a%*%t(a) and same for C & E) Each variance component type, can be "standardized" by dividing by the sum A+C+E (the phenotypic covariance). Then you would have proportions of variance on the diagonal, and contributions to the covariance on the off diagonal (since A, C and E off -diagonals can be of different sign, the off-diagonal elements of (A/(A+C+E) are not strictly proportions). Also possible is to use cov2cor on the A matrix to inspect the genetic correlation.