I fit a nuclear twin family model. AE model is the best. However, the CI of e makes me confused. Here are the output in free parameters and CI details section. The CI details looks strange, ranging from 0 to 2.053589e+06.
name matrix row col Estimate Std.Error A lbound ubound
1 AddGenPath MZntf.a 1 1 0.708885615 1.004657e-02
2 EnvPath MZntf.e 1 1 0.668286218 1.224575e-02
3 AMCopath MZntf.mu 1 1 0.590740014 1.836063e-02
CI details:
parameter side value fit diagnostic statusCode method
AddGenPath lower 5.859355e-01 11404.18 success OK neale-miller-1997
AddGenPath upper 8.259182e-01 11404.18 success OK neale-miller-1997
EnvPath lower -5.363198e+00 11403.31 alpha level not reached infeasible non-linear constraint neale-miller-1997
EnvPath upper 2.053589e+06 11402.99 alpha level not reached infeasible non-linear constraint neale-miller-1997
Then I add mxBootstrap(AE.NTF.Fit, 1000) to calculate CIs. Here are the results. It looks confusing that the std.error of e is 0.000000 and the CI is so close to the estimate.
name matrix. row col Estimate Std.Error 2.5% 97.5%
1 AddGenPath MZntf.a 1 1 0.708885615 0.06318805 0.56058213 0.81236401
2 EnvPath MZntf.e 1 1 0.668286218 0.00000000 0.66828622 0.66828622
3 AMCopath MZntf.mu 1 1 0.590740014 0.02719992 0.54368092 0.64904098
I would like to know what caused this. Which one is right? Is it acceptable to use CIs in bootstrap method? If not, what can I do to get the accurate CIs?
I agree that those results seem odd. However, I'd need to see your full script to be able to tell what's going on.
Thanks for your reply. I have been working on it for many days but still could not find the solutions. Here is my script.
Which optimizer are you using? If you're using CSOLNP (the on-load default), then you should try either (1) switching optimizers or (2) placing the MxConstraints in either the MZ or DZ MxModel, but not both. You can switch optimizers with
mxOption()
, e.g.mxOption(NULL,"Default optimizer","SLSQP")
switches optimizers to SLSQP.What do you get from
qr(ADSFE.NTF.Fit$output$constraintJacobian)
?What do you get from
mxVersion()
?Aside from the confidence intervals...do the point estimates you get look reasonable?
How many phenotypes are you analyzing, anyhow? Your posted script doesn't show what value is assigned to
nv
.Thanks for your quick reply. My openMx version is 2.14.11. I am analyzing one phenotype and nv<-1 in my script. Aside from the CIs, the point estimate looks reasonable. The estimate of E is 0.662516155 and the std.error is 1.503494e-02.
The output I get from
qr(ADSFE.NTF.Fit$output$constraintJacobian)
The output of free parameters in AE model
The beginning of the mentioned script
Here is the output for mxVersion().
Finally, I tried to place the MxConstraints only in MZ model and in DZ model by the following correction. These two results are consistent and the CIs could be estimated. However the result changes a lot compared to placing the MxConstraints both MZ and DZ MxModel. The best model is ADSE model and the CIs of a and s are including zero.
The code I changed
the results of ADSE model
Why are these two results so different? I am looking forward to your reply. Thanks forward.
I think the model might not be identified. What do you get if you run
mxCheckIdentification()
on your MxModel objects?Also, I notice that you're not adjusting for age of parents and twins, nor for sex of twins. Doing so is generally advised. But, worry about that after trying
mxCheckIdentification()
.For that matter, your script also models parents and twins as having the same model-expected mean:
Is that really realistic for the trait you're studying?
You are right. The ADSFE model could not be identified. However, the submodels seemed to be identified. The output for the submodels is just like this. The status is “TRUE” and $non_identified_parameters is "None". Could it be seen as identified? If it is identified, is it acceptable that I set some path to zero to make submodels on a non-identified model? If not, should I model ADFE, ADSE and ASFE separately?
Also, the question I mentioned earlier still make me confused. Why I move constraints to MZmodel make such a difference?
You are right that it seems not feasible to model parents and twins as having the same model-expected mean. However it is always to do so in nuclear twin family study. I am new in this area and also have some confusion. I will consider it seriously and control sex and age factors after dealing with the identification problem.
I am looking forward to your reply.
Yes, the model is at least locally identified, at the current values of its free parameters.
Yes, that sounds reasonable to me. It's analogous to how, in the classical twin design, the ACDE model is unidentified, and therefore one must fix either the C or D component to zero in any given model.
That was probably an artifact of model unidentification.
Thanks for your reply. I still have some problems with the result. The path diagram of nuclear twin model is in the attachment.
Firstly, the estimates of m and w are significantly, but NEGATIVE. It seems difficult to explain it reasonably. I don’t know if I should report these negative values as the output shows or I should set these factors between 0 and 1 ahead of running the script.
Secondly, I tried to make ADFE, ASFE and ADSE model separately. However, the ADSE model do not have an equal degree of freedom as ASFE and ADFE model because ADSE model has no estimates of m, w and some nonlinear constraints (i.e., w1=w2, x1=x2). Therefore, I am not sure if it is acceptable for me to do this.
Your reply is highly appreciated.
Why is it a problem if they're negative? You haven't mentioned what trait you're studying.
I don't see that there's anything wrong in doing that.