[R-sig-ME] Error with nlme and fixed effects defined with a minus 1

biii m@iii@g oii de@@ey@ws biii m@iii@g oii de@@ey@ws
Fri Aug 13 01:59:44 CEST 2021


Hello,

 

I think that I have found a bug in nlme.  When I generate a model with fixed
effects defined with a factor - 1 (see model_minus1 below) and I simulate
with level=0 in a data.frame that does not have all the levels (see predict
into simdata2 with model_minus1 below), there is an error.  But, if the
model is defined without the minus 1 or all factor levels are represented
within the simulation data, there is no error.

 

Did I find a bug in nlme?

 

Thanks,

 

Bill

 

``` r

library(nlme)

simdata <-

  merge(

    merge(

      data.frame(treatment=factor(c("A", "B"))),

      data.frame(ID=factor(1:10))

    ),

    data.frame(time=1:10)

  )

set.seed(5)

simdata$obs <- rnorm(nrow(simdata))

model_minus1 <- nlme(obs~e0, data=simdata, fixed=e0~treatment - 1,
random=e0~1|ID, start=c(e0=c(0, 0)))

model <- nlme(obs~e0, data=simdata, fixed=e0~treatment, random=e0~1|ID,
start=c(e0=c(0, 0)))

 

# Generate new data with the correct treatment factor levels, but only one
of

# the levels represented within the data.

simdata2 <-

  merge(

    data.frame(treatment=factor("A", levels=c("A", "B"))),

    data.frame(time=1:10)

  )

# Generate new data with all factor levels represented

simdata3 <-

  merge(

    data.frame(treatment=factor(c("A", "B"))),

    data.frame(time=1:10)

  )

predict(model, newdata=simdata2, level=0)

#>  [1] 0.02690558 0.02690558 0.02690558 0.02690558 0.02690558 0.02690558

#>  [7] 0.02690558 0.02690558 0.02690558 0.02690558

#> attr(,"label")

#> [1] "Predicted values"

# Without all levels in newdata$treatment, it fails

predict(model_minus1, newdata=simdata2, level=0)

#> Error in pars[, nm] <- f %*% beta[fmap[[nm]]]: number of items to replace
is not a multiple of replacement length

# With all levels in newdata$treatment, it works

predict(model_minus1, newdata=simdata3, level=0)

#>  [1] 0.02690558 0.02123989 0.02690558 0.02123989 0.02690558 0.02123989

#>  [7] 0.02690558 0.02123989 0.02690558 0.02123989 0.02690558 0.02123989

#> [13] 0.02690558 0.02123989 0.02690558 0.02123989 0.02690558 0.02123989

#> [19] 0.02690558 0.02123989

#> attr(,"label")

#> [1] "Predicted values"

```

 

<sup>Created on 2021-08-12 by the [reprex
package](https://reprex.tidyverse.org) (v2.0.0)</sup>


	[[alternative HTML version deleted]]



More information about the R-sig-mixed-models mailing list