# Comparing ACE and ADE models

8 posts / 0 new
Offline
Joined: 03/11/2020 - 11:42

Hello,

I have a couple of questions regarding comparing ACE and ADE models.

1. Is there a quick method of comparing the fit of both of these models? As of right now I am running the scripts for each model, then comparing the two models using mxcompare:
mxCompare( fitADENOTW , fitACENOTW )

I know typically when we compare nested, we run something to the effect of...

#Run ACE model without Twin Effect
modelACENOTW   <- mxModel( fitACE, name="oneACENOTWba" )
modelACENOTW   <- omxSetParameters( modelACENOTW, labels="tw11", free=FALSE, values=0 )
fitACENOTW     <- mxTryHard( modelACENOTW, intervals=F )
mxCompare( fitACE, fitACENOTW ) 

But I am unsure how to incorporate the change from the ACE model:

covDZ     <- mxAlgebra( expression= 0.5%x%A+ C+Tw, name="cDZ" )
covSIB    <- mxAlgebra( expression= 0.5%x%A+ C, name="cSIB" ) 

covDZ     <- mxAlgebra( expression= 0.5%x%A+ 0.25%x%D+Tw, name="cDZ" )
covSIB    <- mxAlgebra( expression= 0.5%x%A+ 0.25%x%D, name="cSIB" )

in a short, correct manner that would preclude me from running two separate scrips.

1. Even when I run these models and compare their fit, I am unable to test whether differences in their fit are statistically significant. Notice the P value indicates NA. I know I can reference the AIC descriptives, with the ADE fitting better than ACE in this instance, but I also want to include the p value, if possible.
< mxCompare( fitADENOTW , fitACENOTW )
base   comparison ep minus2LL   df      AIC   diffLL diffdf  p
1 oneADENOTWba         <NA>  8 4879.663 1740 1399.663       NA     NA NA
2 oneADENOTWba oneACENOTWba  8 4882.399 1740 1402.399 2.735366      0 NA

This may have something to do with the similar degrees of freedom, since chi-square fit statistics uses df. However, I have used chi-square tests of fitness before (SEM) and, if I am not mistaken, it yielded a p value.

Any help would be greatly appreciated.

Offline
Joined: 07/31/2009 - 14:25
use umxACE dzAr parameter, or umxModify

If you use umx, then for univariate ACE models, you can use umxReduce(m1)

This will run ADE/ACE, AE, CE, and give you a comparison table and the relative probability of each in this set.

If you have a multivariate model, you could umxModify the model, and get a comparison (shown below). But it's probably more straightforward to use the dzAr parameter in umxACE to build the ADE model and compare the two.

FYI:

data(twinData)
twinData[, c("ht1", "ht2")] = twinData[, c("ht1", "ht2")] * 10
mzData = twinData[twinData$zygosity %in% "MZFF", ] dzData = twinData[twinData$zygosity %in% "DZFF", ]

m1 = umxACE(selDVs = "ht", selCovs = "age", sep = "", dzData = dzData, mzData = mzData)

m2 = umxModify(m1, "dzCr_r1c1", value = .25, name="ADE", comp=TRUE)

ACE -2 × log(Likelihood) = 5944.845
Standardized solution

a1 d1 e1
ht 0.933 0 0.36

Means: Intercept and (raw) betas from model$top$intercept and model$top$meansBetas

ht1 ht2
intercept 16.446 16.446
age -0.005 -0.005
Model EP Δ -2LL Δ df p AIC Δ AIC Compare with Model
ACE 5 -1843.155 0.000000
ADE 5 -0.014679 0 -1843.169 -0.014679 ACE
Offline
Joined: 03/11/2020 - 11:42
This looks great!

I tried installing and using this function, but unfortunately its not available for R version 4.0.0.

Warning in install.packages :
package ‘umxReduce’ is not available (for R version 4.0.0)

While I wait for it to become available I will continue running two separate models then comparing them. Thank you!!

Offline
Joined: 03/11/2020 - 11:42
Nevermind.

Its umx, not umxReduce. I was able to download this. Thank you!

Offline
Joined: 03/11/2020 - 11:42
This is fantastic!!

I was able to get it to run, but it seems to omit my sibling data set.

m1 = umxACE(selDVs = "fem", selCovs=c("age","sex"), sep = "", mzData = mzData, dzData = dzData, sibData = sibData)

and I get this message

> m1 = umxACE(selDVs = "fem", selCovs=c("age","sex"), sep = "", mzData = mzData, dzData = dzData, sibData = sibData)
Error in umxACE(selDVs = "fem", selCovs = c("age", "sex"), sep = "", mzData = mzData,  :
unused argument (sibData = sibData) 

and it runs the model fitting with only two out of the three datasets.


|Model | EP|Δ -2LL    |Δ df |p     |      AIC|     Δ AIC|Compare with Model |
|:-----|--:|:---------|:----|:-----|--------:|---------:|:------------------|
|ACE   |  6|          |     |      | 1059.607|  0.000000|                   |
|ADE   |  6|1.294747  |0    |      | 1060.901|  1.294747|ACE                |
|CE    |  5|0.3068545 |1    |0.580 | 1057.913| -1.693145|ACE                |
|AE    |  5|1.294747  |1    |0.255 | 1058.901| -0.705253|ACE                | 

Any idea how to fix this?

Offline
Joined: 07/31/2009 - 14:25
umxACE only supports 2 groups and 2-siblings at present

Hi,
I've not implemented 5-group or extended family support in umxACE. It's not high on the priority list currently. I consider it from time to time but it would be a major development project, as IP, CP, etc all would have to grow in capability to make it worth doing.

Offline
Joined: 03/11/2020 - 11:42
Alrighty!

I am just excited to have used it. Ill stick with the multiple scripts for now. Thank you so much for this helpful piece of code I will hopefully use in my future studies.

Offline
Joined: 03/01/2013 - 14:09