Cholesky model WLS

I am running Hermine's Cholesky script (Boulder "cdrom" 2016) only change I make is that I Use mxDataWLS to precompute the polychoric correlations and WLS weights:
DZdata <- mxDataWLS(DZ)
This runs without errors.
I then proceed to adjust the mxExpectation to reflect the nature of the data:
expMZ <- mxExpectationNormal( covariance="expCovMZ", means="meanG",thresholds="Tr", dimnames=selVars )
expDZ <- mxExpectationNormal( covariance="expCovDZ", means="meanG",thresholds="Tr", dimnames=selVars )
(Threshodls fixed at 0 and 1, so covariance and means can be freely estimated)
I proceed to specify the correct fit function:
funWLS <- mxFitFunctionWLS()
When I run the model I get the following error:
Running mulACEc with 185 parameters
Error in svd(X) : infinite or missing values in 'x'
Any suggestions?
I found the issue, the
Log in or register to post comments
In reply to I found the issue, the by MichelNivard
Any sugestion on how to
Log in or register to post comments
In reply to I found the issue, the by MichelNivard
can't replicate the WLS twinData problem?
A reproducible code chunk always helps:
# Load and make a copy of the Data
data(twinData)
binData = twinData
# Create Binary "obesity" Variables based on bmi, and turn them into ordered factors
binData$ob1 = ifelse(twinData[,'bmi1'] > 22, 1, 0)
binData$ob2 = ifelse(twinData[,'bmi2'] > 22, 1, 0)
binData$ob1 = mxFactor(binData$ob1, levels = 0:1)
binData$ob2 = mxFactor(binData$ob2, levels = 0:1)
#select the MZ and DZ pairs
mzData <- binData[binData$zyg %in% 1, c("ob1", "ob2")]
dzData <- binData[binData$zyg %in% 3, c("ob1", "ob2")]
#and make into WLS
dzDataWLS <- mxDataWLS(dzData)
This object doesn't have a Weights slot, but the acov/fullWeights matrix looks OK?
dzDataWLS@acov; dzDataWLS@fullWeight
[,1] [,2] [,3] [,4] [,5] [,6] [,7]
[1,] 0 0.0000000 0 0 0 0.0000000 0.0000000
[2,] 0 109.6199337 0 0 0 -0.8991427 -0.2871061
[3,] 0 0.0000000 0 0 0 0.0000000 0.0000000
[4,] 0 0.0000000 0 0 0 0.0000000 0.0000000
[5,] 0 0.0000000 0 0 0 0.0000000 0.0000000
[6,] 0 -0.8991427 0 0 0 175.0299098 -41.9596843
[7,] 0 -0.2871061 0 0 0 -41.9596843 170.9643746
Log in or register to post comments
In reply to can't replicate the WLS twinData problem? by tbates
Tim,
Your obviously right it would be great to reproduce the error. However it seems to be dependent on the data, and I am not allowed upload my data.
Ill work on simulating data which reproduces the error.
Michel
Log in or register to post comments
Working on it
I'm not sure what the problem is with this just yet. WLS is generally safe to use and I'm very glad someone outside the dev team is trying it!
I'll be checking into this over the next few days to see what the problem is and hopefully solve it swiftly. My current guess is there's a small bug in WLS. For arguments sake, is there anything strange about the data? Tons of missingness? 400 variables?
Log in or register to post comments
In reply to Working on it by mhunter
Hi,
78 variables, I can reproduce the error with as little as 10 variables in the model. Missingness is << 10% for any given variable.
If there is a bug it must be local to MxDataWLS() because clearly the NaN's in the Weights matrix are the error.
summary(as.vector(MZdata$fullWeight))
Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
-Inf -72 0 NaN 73 Inf 310
The summary of the data:
q1m7t1 q3m7t1 q8m7t1 q10m7t1 q13m7t1 q16m7t1 q17m7t1 q20m7t1 q21m7t1 q22m7t1 q1m7t2
0 :3535 0 :1554 0 :2566 0 :2601 0 :4263 0 :3872 0 :3049 0 :3915 0 :3954 0 :2047 0 :3460
1 : 750 1 :2423 1 :1473 1 :1451 1 : 161 1 : 548 1 :1225 1 : 480 1 : 459 1 :2208 1 : 798
2 : 159 2 : 468 2 : 360 2 : 394 2 : 19 2 : 37 2 : 170 2 : 49 2 : 26 2 : 181 2 : 160
NA's: 92 NA's: 91 NA's: 137 NA's: 90 NA's: 93 NA's: 79 NA's: 92 NA's: 92 NA's: 97 NA's: 100 NA's: 118
q3m7t2 q8m7t2 q10m7t2 q13m7t2 q16m7t2 q17m7t2 q20m7t2 q21m7t2 q22m7t2
0 :1723 0 :2633 0 :2570 0 :4258 0 :3898 0 :3165 0 :3940 0 :3971 0 :2170
1 :2288 1 :1423 1 :1484 1 : 148 1 : 515 1 :1111 1 : 441 1 : 423 1 :2086
2 : 411 2 : 297 2 : 378 2 : 14 2 : 21 2 : 156 2 : 46 2 : 30 2 : 168
NA's: 114 NA's: 183 NA's: 104 NA's: 116 NA's: 102 NA's: 104 NA's: 109 NA's: 112 NA's: 112
Best,
Michel
Log in or register to post comments
In reply to Hi, by MichelNivard
N?
What is the sample size here? Weight matrices can get non-positive definite if the sample size is small. Even with 10 variables we are looking at 10*11/2 = 55 statistics if there is only one threshold per trait. With 78 variables we are talking over 3,000 statistics.
Another possible source of the issue occurs to me - if the data are ordinal and whole rows or columns are empty, then I suspect the threshold estimates could get messy, as one would want to be exactly on top of the next one, and underidentification could occur.
Cheers
Mike
Log in or register to post comments
In reply to N? by AdminNeale
Sample size
Should be sufficinent for the 20 item subset in which the issue now occurs right?
As to your comment about empty rows or columns, rows or columns of what matrix exactly? The data?
Log in or register to post comments
Which version?
Log in or register to post comments
In reply to Which version? by mhunter
2.7.11
Log in or register to post comments