[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