1

I am getting an error message trying to predict class membership in lcmm::predictClass(). This seems to be due to using a spline-based link function, as exemplified below. The lcmm::predictClass() function works okay for the default link function.

The following shows 1) a reproduceable example giving the error message, and 2) a working example with the same broad approach.

## define initialisation values for quick result here
BB <- c(-19.064,21.718,-1.192,-1.295,-1.205,-0.281,0.110,
         -0.232, 1.339,-1.007, 1.019,-9.395, 1.702,2.030,
          2.089, 1.352,-9.369, 1.220, 1.532, 2.481,1.223)

library(lcmm)
m2c <- multlcmm(Ydep1+Ydep2~1+Time*X2,
                random=~1+Time,
                subject="ID",
                link="3-quant-splines",
                ng=2,
                mixture=~1+Time,
                classmb=~1+X1,
                data=data_lcmm,
                B=BB)
## converges in 3 iterations

## define the prediction cases
library(dplyr)
X <- data_lcmm %>% 
  filter(ID %in% sample(ID,10)) %>% ## 10 random IDs
  select(ID,Ydep1,Ydep2,Time,X1,X2)

## find predicted class memberships
predictClass(m2c, newdata=X)
## Error in multlcmm(fixed = Ydep1 + Ydep2 ~ 1 + Time * X2, mixture = ~1 +  : 
##   Length of vector range is not correct.

On the other hand, a similar approach with a linear link function gives the following. Note that these models are based on the example in the ?multlcmm help section.

library(lcmm)
m2 <- multlcmm(Ydep1+Ydep2~1+Time*X2,
               random=~1+Time,
               subject="ID",
               link="linear",
               ng=2,
               mixture=~1+Time,
               classmb=~1+X1,
               data=data_lcmm,
               B=c(18,-20.77,1.16,-1.41,-1.39,-0.32,0.16,
                   -0.26,1.69,1.12,1.1,10.8,1.24,24.88,1.89))
## converges in 2 iterations

library(dplyr)
X <- data_lcmm %>% 
  filter(ID %in% sample(ID,10)) %>%
  select(ID,Ydep1,Ydep2,Time,X1,X2)

predictClass(m2, newdata=X)
##     ID class       prob1        prob2
## 1   21     2 0.031948951 9.680510e-01
## 2   25     2 0.042938984 9.570610e-01
## 3   33     2 0.026053178 9.739468e-01
## 4   46     1 0.999999964 3.597409e-08
## 5   50     2 0.066291287 9.337087e-01
## 6   74     2 0.005630593 9.943694e-01
## 7  120     2 0.024787290 9.752127e-01
## 8  171     2 0.053499974 9.465000e-01
## 9  229     1 0.999999996 4.368222e-09
##10  235     2 0.008173507 9.918265e-01
## ...or similar 

The other predict functions predictL() and predictY() seem to work okay. The predictRE() throws the same error message.

I will also email the package maintainer.

1

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.