# Cholesky mx status RED

I am trying to run a Cholesky Decomposition with 3 binary variables and I keep getting the error message

“In model 'multiCholACEModel' Optimizer returned a non-zero status code 6. The model does not satisfy the first-order optimality conditions to the required accuracy, and no improved point for the merit function could be found during the final linesearch (Mx status RED)”

I have tried changing the threshold starting values (the ones currently in there is from the saturated model) and reducing mvnRelEps, but the model still will not converge. I am not sure if this is due to errors in the script or other reasons.

Due to results from the univariate models, I went straight for the AE model.

Any guidance or tips on how to proceed would be greatly appreciated, I have included the script, but due to confidentiality agreements I cannot include any data.

Kind regards/ Lisa

#setting up for the analysis

nv <- 3 #number of variables

ntv <- nv*2 #number of variables for a pair

nth <- 1 #number of thresholds

thRows <- paste("th",1:nth,sep="")

thFree <- matrix(c(T,T,T),nrow=nth,ncol=nv)

thValues <- matrix(c(1.56,0.75,1.74),nrow=nth,ncol=nv)

thLBound <- matrix(rep(c(0.001,rep(0.001,nth-1)),nv),nrow=nth,ncol=nv) #constricting the values to be positive

thLabels=rep(c("pain","cmd","disability"),2)

```
```#Organising the data as ordinal

Vars <- c('PAIN','CMD', 'DISABILITY')

selVars <- paste(Vars,c(rep(1,nv),rep(2,nv)),sep="")

mzDataOrd <- subset(selData, bestzyg==1, selVars)

dzDataOrd <- subset(selData, bestzyg==2, selVars)

mzDataOrd [,1]<- mxFactor(mzDataOrd[,1], levels = c(0:1))

mzDataOrd [,2]<- mxFactor(mzDataOrd[,2], levels = c(0:1))

dzDataOrd [,1]<- mxFactor(dzDataOrd[,1], levels = c(0:1))

dzDataOrd [,2]<- mxFactor(dzDataOrd[,2], levels = c(0:1))

mzDataOrd [,3]<- mxFactor(mzDataOrd[,3], levels = c(0:1))

mzDataOrd [,4]<- mxFactor(mzDataOrd[,4], levels = c(0:1))

dzDataOrd [,3]<- mxFactor(dzDataOrd[,3], levels = c(0:1))

dzDataOrd [,4]<- mxFactor(dzDataOrd[,4], levels = c(0:1))

mzDataOrd [,5]<- mxFactor(mzDataOrd[,5], levels = c(0:1))

mzDataOrd [,6]<- mxFactor(mzDataOrd[,6], levels = c(0:1))

dzDataOrd [,5]<- mxFactor(dzDataOrd[,5], levels = c(0:1))

dzDataOrd [,6]<- mxFactor(dzDataOrd[,6], levels = c(0:1))

summary(mzDataOrd)

summary(dzDataOrd)

describe(mzDataOrd)

describe(dzDataOrd)

# Fit Multivariate ACE Model with RawData and Matrices Input

# -----------------------------------------------------------------------

cholSVnv <- c(.5,0,0,.5,0,.5)

AFac <- c(

"a11","a21","a31",

"a22","a32",

"a33")

CFac <- c(

"c11","c21","c31",

"c22","c32",

"c33")

EFac <- c(

"e11","e21","e31",

"e22","e32",

"e33")

# Matrices a, c, and e to store a, c, and e path coefficients

a <- mxMatrix( type="Lower", nrow=nv, ncol=nv, free=TRUE, values=cholSVnv, labels=AFac, name="a" )

c <- mxMatrix( type="Lower", nrow=nv, ncol=nv, free=FALSE, values=0, labels=CFac, name="c" )

e <- mxMatrix( type="Lower", nrow=nv, ncol=nv, free=TRUE, values=cholSVnv, labels=EFac, name="e" )

# Matrices A, C, and E compute variance components

A <- mxAlgebra( expression=a %*% t(a), name="A" )

C <- mxAlgebra( expression=c %*% t(c), name="C" )

E <- mxAlgebra( expression=e %*% t(e), name="E" )

# Algebra to compute total variances and standard deviations (diagonal only)

V <- mxAlgebra( expression=A+C+E, name="V" )

I <- mxMatrix( type="Iden", nrow=nv, ncol=nv, name="I")

iSD <- mxAlgebra( expression=solve(sqrt(I*V)), name="iSD")

# Constraint on variance of Ordinal variables

Var1 <- mxConstraint( expression=I*V==I, name="Var1") #if ordinal

## Note that the rest of the mxModel statements do not change for bi/multivariate case

# Matrix & Algebra for expected means vector

expMean<- mxMatrix( type="Zero", nrow=1, ncol=ntv, name="expMean" )

Thre<- mxMatrix( type="Full", nrow=nth, ncol=nv, free=TRUE, values=thValues, lbound=thLBound, name="Thre" )

Inc<- mxMatrix( type="Lower", nrow=nth, ncol=nth, free=FALSE, values=1, name="Inc" )

ThreInc<- mxAlgebra( expression= Inc %*% Thre, name="ThreInc")

expThre<- mxAlgebra( expression= cbind(ThreInc,ThreInc), dimnames=list(thRows,selVars), name="expThre" )

# Algebra for expected variance/covariance matrix in MZ

expCovMZ<- mxAlgebra( expression= rbind ( cbind(A+C+E , A+C),

cbind(A+C , A+C+E)), name="expCovMZ" )

# Algebra for expected variance/covariance matrix in DZ

expCovDZ<- mxAlgebra( expression= rbind ( cbind(A+C+E , 0.5%x%A+C),

cbind(0.5%x%A+C , A+C+E)), name="expCovDZ" )

funML <- mxFitFunctionML()

dataMZ <- mxData( observed=mzDataOrd, type="raw" )

expMZ <- mxExpectationNormal( covariance="expCovMZ", means="expMean", dimnames=selVars, thresholds="expThre")

dataDZ<- mxData( observed=dzDataOrd, type="raw" )

expDZ<- mxExpectationNormal( covariance="expCovDZ", means="expMean", dimnames=selVars, thresholds="expThre")

pars <- list(a, c, e, A, C, E, V, I, iSD)

modelMZ <- mxModel( expCovMZ, expMean, Thre, Inc, ThreInc, expThre, dataMZ, expMZ, funML, pars, name="MZ" )

modelDZ <- mxModel( expCovDZ, expMean, Thre, Inc, ThreInc, expThre, dataDZ, expDZ, funML, pars, name="DZ")

multi <- mxFitFunctionMultigroup( c("MZ","DZ") )

`multiCholACEModel <- mxModel( "multiCholACEModel", modelMZ, modelDZ, multi)`

multiCholACEModel <- mxTryHard(multiCholACEModel)

multiCholACEModelfit <- mxRun( multiCholACEModel, intervals=F )

summultiCholACEModel <- summary( multiCholACEModelfit )

summultiCholACEModel

## non-ASCII quote; mxTryHardOrdinal()

`Vars <- c('PAIN','CMD’, 'DISABILITY')`

to`Vars <- c('PAIN','CMD', 'DISABILITY')`

. I could not run that line under Windows or Linux/GNU. Are you on a Mac?The algorithm that calculates the multivariate-normal probability integral only has so much numerical accuracy, and the inaccuracy is worse out into the tails of the distribution. Further, the numerical error is compounded by the finite-differences subroutine that numerically approximates the fitfunction derivatives. As a result, sometimes models of threshold traits cannot satisfy the first or second-order conditions for a local minimum, even when they've actually reached one. In such situations, the best you can do is try to find the smallest possible -2logL. I notice you're using

`mxTryHard()`

. Some of the default argument values for`mxTryHard()`

are downright counterproductive for optimization with threshold traits. Use`mxTryHardOrdinal()`

instead (or equivalently use different argument values to vanilla`mxTryHard()`

). Also, if you're not using the on-load default optimizer, CSOLNP, you should be.The issue of "inescapable status red with threshold variables" is quite common. Two relevant forums threads that readily come to my mind are this one and this one. You could find others if you search our forums.

Log in or register to post comments

## seperate thresholds

However, now that I got some results, I noticed that my model is estimating separate thresholds for MZ and DZ twins, even though they seem to have the same label. Am I doing something wrong in the mxFitFunctionMultigroup?

Log in or register to post comments

In reply to seperate thresholds by Lisa M

## labels

It's nothing related to `mxFitFunctionMultigroup()`. Your syntax defines a character vector `thLabels` but doesn't use it when you create `Thre`. Consequently, each threshold exists in your MxModel's namespace as 'containingModelName.matrixName[row,col]', e.g. 'MZ.Thre[1,1]'.

Log in or register to post comments

## need to add labels to the "Thre" matrix

Thre<- mxMatrix( type="Full", nrow=nth, ncol=nv, free=TRUE, values=thValues, lbound=thLBound, name="Thre")

You could add labels.

Also consider that `umxACE` will do all of this automatically for you in one maintained and flexible function:

m1 = umxACE("multiCholACEModel", selVars = c('PAIN','CMD', 'DISABILITY'), sep = "", dzData = mzDataOrd, dzData = dzDataOrd, tryHard="yes")

umxSummary(m1)

plot(m1)

Bates, T. C., Maes, H., & Neale, M. C. (2019). umx: Twin and Path-Based Structural Equation Modeling in R. Twin Res Hum Genet, 22(1), 27-41. doi:[10.1017/thg.2019.2](https://www.cambridge.org/core/journals/twin-research-and-human-genetics/article/umx-twin-and-pathbased-structural-equation-modeling-in-r/B9658AC0CDA139E540BFAC0C9D989623)

Log in or register to post comments

In reply to need to add labels to the "Thre" matrix by tbates

## umx

1 PAIN1_dev1

2 CMD1_dev1

3 DISABILITY1_dev1

4 PAIN2_dev1

5 CMD2_dev1

6 DISABILITY2_dev1

7 a_r1c1

8 a_r2c1

9 a_r3c1

10 a_r2c2

11 a_r3c2

12 a_r3c3

13 c_r1c1

14 c_r2c1

15 c_r3c1

16 c_r2c2

17 c_r3c2

18 c_r3c3

19 e_r1c1

20 e_r2c1

21 e_r3c1

22 e_r2c2

23 e_r3c2

24 e_r3c3

The extra thresholds are giving me problems when I try to fit an IP model. I tried using umxThresholdMatrix and it is telling me that the thresholds all have the same labels and same values.

> umxThresholdMatrix(dzDataOrd, selDVs = selVars, sep = "", method = c("auto"), threshMatName = "threshMat", droplevels = FALSE, verbose = FALSE)

[[1]]

LowerMatrix 'lowerOnes_for_thresh'

$labels: No labels assigned.

$values

[,1]

[1,] 1

$free: No free parameters.

$lbound: No lower bounds assigned.

$ubound: No upper bounds assigned.

[[2]]

FullMatrix 'deviations_for_thresh'

$labels

PAIN1 CMD1 DISABILITY1 PAIN2 CMD2 DISABILITY2

dev_1 "PAIN_dev1" "CMD_dev1" "DISABILITY_dev1" "PAIN_dev1" "CMD_dev1" "DISABILITY_dev1"

$values

PAIN1 CMD1 DISABILITY1 PAIN2 CMD2 DISABILITY2

dev_1 1.754467 1.367181 1.957871 1.754467 1.367181 1.957871

$free

PAIN1 CMD1 DISABILITY1 PAIN2 CMD2 DISABILITY2

dev_1 TRUE TRUE TRUE TRUE TRUE TRUE

$lbound: No lower bounds assigned.

$ubound: No upper bounds assigned.

[[3]]

mxAlgebra 'threshMat'

$formula: lowerOnes_for_thresh %*% deviations_for_thresh

$result: (not yet computed) <0 x 0 matrix>

dimnames:

[[1]]

[1] "th_1"

[[2]]

[1] "PAIN1" "CMD1" "DISABILITY1" "PAIN2" "CMD2" "DISABILITY2"

>

> umxThresholdMatrix(mzDataOrd, selDVs = selVars, sep = "", method = c("auto"), threshMatName = "threshMat", droplevels = FALSE, verbose = FALSE)

[[1]]

LowerMatrix 'lowerOnes_for_thresh'

$labels: No labels assigned.

$values

[,1]

[1,] 1

$free: No free parameters.

$lbound: No lower bounds assigned.

$ubound: No upper bounds assigned.

[[2]]

FullMatrix 'deviations_for_thresh'

$labels

PAIN1 CMD1 DISABILITY1 PAIN2 CMD2 DISABILITY2

dev_1 "PAIN_dev1" "CMD_dev1" "DISABILITY_dev1" "PAIN_dev1" "CMD_dev1" "DISABILITY_dev1"

$values

PAIN1 CMD1 DISABILITY1 PAIN2 CMD2 DISABILITY2

dev_1 1.802673 1.333306 2.006859 1.802673 1.333306 2.006859

$free

PAIN1 CMD1 DISABILITY1 PAIN2 CMD2 DISABILITY2

dev_1 TRUE TRUE TRUE TRUE TRUE TRUE

$lbound: No lower bounds assigned.

$ubound: No upper bounds assigned.

[[3]]

mxAlgebra 'threshMat'

$formula: lowerOnes_for_thresh %*% deviations_for_thresh

$result: (not yet computed) <0 x 0 matrix>

dimnames:

[[1]]

[1] "th_1"

[[2]]

[1] "PAIN1" "CMD1" "DISABILITY1" "PAIN2" "CMD2" "DISABILITY2"

Am I missing something in my model? Below is the syntax I have been using.

nv <- 3 #number of variables

Vars <- c('PAIN','CMD','DISABILITY')

Vars

selVars <- paste(Vars,c(rep(1,nv),rep(2,nv)),sep="")

selVars

mzDataOrd <- subset(selData, bestzyg==1, selVars)

dzDataOrd <- subset(selData, bestzyg==2, selVars)

mzDataOrd [,1]<- mxFactor(mzDataOrd[,1], levels = c(0:1))

mzDataOrd [,2]<- mxFactor(mzDataOrd[,2], levels = c(0:1))

dzDataOrd [,1]<- mxFactor(dzDataOrd[,1], levels = c(0:1))

dzDataOrd [,2]<- mxFactor(dzDataOrd[,2], levels = c(0:1))

mzDataOrd [,3]<- mxFactor(mzDataOrd[,3], levels = c(0:1))

mzDataOrd [,4]<- mxFactor(mzDataOrd[,4], levels = c(0:1))

dzDataOrd [,3]<- mxFactor(dzDataOrd[,3], levels = c(0:1))

dzDataOrd [,4]<- mxFactor(dzDataOrd[,4], levels = c(0:1))

mzDataOrd [,5]<- mxFactor(mzDataOrd[,5], levels = c(0:1))

mzDataOrd [,6]<- mxFactor(mzDataOrd[,6], levels = c(0:1))

dzDataOrd [,5]<- mxFactor(dzDataOrd[,5], levels = c(0:1))

dzDataOrd [,6]<- mxFactor(dzDataOrd[,6], levels = c(0:1))

summary(mzDataOrd)

summary(dzDataOrd)

umxThresholdMatrix(dzDataOrd, selDVs = selVars, sep = "", method = c("auto"), threshMatName = "threshMat", droplevels = FALSE, verbose = FALSE)

umxThresholdMatrix(mzDataOrd, selDVs = selVars, sep = "", method = c("auto"), threshMatName = "threshMat", droplevels = FALSE, verbose = FALSE)

Chol1 = umxACE("CholACEModel", selDVs = Vars, sep = "", mzData = mzDataOrd, dzData = dzDataOrd)

umxSummary(Chol1)

plot(Chol1)

parameters(Chol1)

Log in or register to post comments

## More info?

It is pretty much impossible to help when one doesn't know what exactly the problems are. However, good that you post the code which can sometimes give the intrepid support people clues:

Note how in the example part of ?umxThresholdMatrix its result is put into an object called tmp:

tmp = umxThresholdMatrix(twinData, selDVs = selVars, sep = "", verbose = TRUE)

That object should be included in the model. Running it without a target object to put its output into simply dumps the results to the screen and does nothing else.

umxThresholdMatrix(dzDataOrd, selDVs = selVars, sep = "", method = c("auto"), threshMatName = "threshMat", droplevels = FALSE, verbose = FALSE)

should, I think, include a tmp <- at the beginning, and then be used in the mxModel.

But (and it's a big one)umxACE does all this for you by detecting which variables are ordinal and which are not.Incidentally, it is possible to generate data that have similar properties to the real data, but which are definitely not the observed data and therefore can be shared to help others to debug. See ?mxGenerateData

Finally, if code 6 is the only concern, note that the message is often a false alarm caused by the precision of numerical integration making it difficult to find the exact solution - but the solution found may be extremely close to the correct one (no differences in 2nd decimal place of estimates or -2lnL). Rerunning from different starting values can increase confidence that the approximate solution is very close indeed to the actual one.

Log in or register to post comments

## thresholds are not in unique to each twin

2. thresholds are not in unique to each twin. As shown in the example for this function:

# Example 1

obesityLevels = c('normal', 'obese')

cutPoints = quantile(twinData[, "bmi1"], probs = .2, na.rm = TRUE)

twinData$obese1 = cut(twinData$bmi1, breaks = c(-Inf, cutPoints, Inf), labels = obesityLevels)

twinData$obese2 = cut(twinData$bmi2, breaks = c(-Inf, cutPoints, Inf), labels = obesityLevels)

# Step 2: Make the ordinal variables into umxFactors (ordered, with the levels found in the data)

selVars = c("obese1", "obese2")

twinData[, selVars] <- umxFactor(twinData[, selVars])

`tmp = umxThresholdMatrix(twinData, selDVs = selVars, sep = "")`

tmp[[2]]

$labels

obese1 obese2

dev_1 "obese_dev1" "obese_dev1"

$values

obese1 obese2

dev_1 -0.888 -0.888

$free

obese1 obese2

dev_1 TRUE TRUE

FYI: `umxThresholdMatrix` builds an algebra and 2 matrices: one consisting of offsets (`deviations_for_thresh`) and the other a lower-1s matrix `lowerOnes_for_thresh` which the algebra (`threshMat`) uses to add up the deviations to form thresholds). It thus handles the complex-for-humans job of building correct thresholds which are used within a model.

Log in or register to post comments

## umx

> #setting up for the analysis

> nv <- 2 #number of variables

> ntv <- nv*2 #number of variables for a pair

> nth <- 1 #number of thresholds?

> thRows <- paste("th",1:nth,sep="")

> thFree <- matrix(c(T,T),nrow=nth,ncol=nv)

> thValues <- matrix(c(0.01,0.01),nrow=nth,ncol=nv)

> thLBound <- matrix(rep(c(0.001,rep(0.001,nth-1)),nv),nrow=nth,ncol=nv)#constricting the values to be positive

> thLabels=rep(c("mo","fi"),2)

>

>

> #Organising the data as ordinal

> Vars <- c('mo','fi')

> selVars <- paste(Vars,c(rep(1,nv),rep(2,nv)),sep="")

> mzDataOrd <- subset(selData, zyg==3, selVars)

> dzDataOrd <- subset(selData, zyg==4, selVars)

>

>

>

> mzDataOrd [,1]<- mxFactor(mzDataOrd[,1], levels = c(0:1))

> mzDataOrd [,2]<- mxFactor(mzDataOrd[,2], levels = c(0:1))

> dzDataOrd [,1]<- mxFactor(dzDataOrd[,1], levels = c(0:1))

> dzDataOrd [,2]<- mxFactor(dzDataOrd[,2], levels = c(0:1))

> mzDataOrd [,3]<- mxFactor(mzDataOrd[,3], levels = c(0:1))

> mzDataOrd [,4]<- mxFactor(mzDataOrd[,4], levels = c(0:1))

> dzDataOrd [,3]<- mxFactor(dzDataOrd[,3], levels = c(0:1))

> dzDataOrd [,4]<- mxFactor(dzDataOrd[,4], levels = c(0:1))

>

> summary(mzDataOrd)

mo1 fi1 mo2 fi2

0 :65 0 :40 0 :64 0 :41

1 :10 1 :35 1 :12 1 :35

NA's:77 NA's:77 NA's:76 NA's:76

> summary(dzDataOrd)

mo1 fi1 mo2 fi2

0 :49 0 :21 0 :37 0 :25

1 : 5 1 :33 1 : 8 1 :20

NA's:44 NA's:44 NA's:53 NA's:53

>

> Chol1 = umxACE("CholACEModel", selDVs = Vars, sep = "", mzData = mzDataOrd, dzData = dzDataOrd)

Found 2 pairs of binary variables:'mo1', 'fi1', 'mo2', and 'fi2'

I am fixing the latent means and variances of these variables to 0 and 1

No continuous variables

Running CholACEModel with 13 parameters

MxComputeGradientDescent(CSOLNP) evaluations 2660 fit 563.574 change -7.317e-010

MxComputeGradientDescent(CSOLNP) evaluations 8242 fit 539.366 change -7.991e-006

MxComputeNumericDeriv 23/91

CholACEModel -2 × log(Likelihood) = 538.36

Standardized solution

| |a1 |a2 | c1|c2 | e1|e2 |

|:--|:--|:--|----:|:--|----:|:---|

|mo |. | | 0.37| | 0.93| |

|fi |. |. | 0.38|. | 0.19|0.9 |

> umxSummary(Chol1)

CholACEModel -2 × log(Likelihood) = 538.36

Standardized solution

| |a1 |a2 | c1|c2 | e1|e2 |

|:--|:--|:--|----:|:--|----:|:---|

|mo |. | | 0.37| | 0.93| |

|fi |. |. | 0.38|. | 0.19|0.9 |

> plot(Chol1)

>

> parameters(Chol1)

name Estimate

1 mo1_dev1 1.21

2 fi1_dev1 -0.05

3 mo2_dev1 0.97

4 fi2_dev1 0.11

5 a_r1c1 0.00

6 a_r2c1 0.00

7 a_r2c2 0.00

8 c_r1c1 0.37

9 c_r2c1 0.38

10 c_r2c2 0.00

11 e_r1c1 0.93

12 e_r2c1 0.19

13 e_r2c2 0.90

>

>

> ip1 <- umxIP("IndPathACEModel", selDVs = Vars, sep = "", dzData = dzDataOrd, mzData = mzDataOrd, nFac=1)

Found 2 pairs of binary variables:'mo1', 'fi1', 'mo2', and 'fi2'

I am fixing the latent means and variances of these variables to 0 and 1

No continuous variables

Running IndPathACEModel with 16 parameters

MxComputeGradientDescent(CSOLNP) evaluations 1142 fit 544.704 change 0.001265

MxComputeGradientDescent(CSOLNP) evaluations 6668 fit 543.923 change 3.504e-005

MxComputeGradientDescent(CSOLNP) evaluations 12205 fit 540.231 change 1.653e-005

MxComputeGradientDescent(CSOLNP) evaluations 17762 fit 538.355 change 7.731e-012

IndPathACEModel -2 × log(Likelihood) = 538.36

## General IP path loadings

| |ai1 | ci1| ei1|

|:--|:---|----:|----:|

|mo |. | 0.37| 0.80|

|fi |. | 0.38| 0.23|

## Specific factor loadings

| |mo |fi |

|:----------|:----|:---|

|Specific a |. |. |

|Specific c |. |. |

|Specific e |0.48 |0.9 |

While making the plot, I found a path labeled mo1_dev1I don't know where that goes.

If you are using umxModify to make newLabels, instead of making up a new label, use, say, the first label in update as the newLabel to help plot()

Error incurred trying to run umxSummary

object 'from' not found> umxSummary(ip1)

IndPathACEModel -2 × log(Likelihood) = 538.36

## General IP path loadings

| |ai1 | ci1| ei1|

|:--|:---|----:|----:|

|mo |. | 0.37| 0.80|

|fi |. | 0.38| 0.23|

## Specific factor loadings

`| |mo |fi |`

|:----------|:----|:---|

|Specific a |. |. |

|Specific c |. |. |

|Specific e |0.48 |0.9 |

While making the plot, I found a path labeled mo1_dev1I don't know where that goes.

If you are using umxModify to make newLabels, instead of making up a new label, use, say, the first label in update as the newLabel to help plot()

Error in umxPlotIP(x = stdFit, file = file, digits = digits, std = FALSE) :

object 'from' not found

> plot(ip1)

While making the plot, I found a path labeled mo1_dev1I don't know where that goes.

If you are using umxModify to make newLabels, instead of making up a new label, use, say, the first label in update as the newLabel to help plot()

Error in plot.MxModelIP(ip1) : object 'from' not found

>

> parameters(ip1)

name Estimate

1 mo1_dev1 1.21

2 fi1_dev1 -0.05

3 mo2_dev1 0.97

4 fi2_dev1 0.11

5 ai_r1c1 0.00

6 ai_r2c1 0.00

7 ci_r1c1 0.37

8 ci_r2c1 0.38

9 ei_r1c1 0.80

10 ei_r2c1 0.23

11 as_r1c1 0.00

12 as_r2c2 0.00

13 cs_r1c1 0.00

14 cs_r2c2 0.00

15 es_r1c1 0.48

16 es_r2c2 0.90

>

Log in or register to post comments