R Under development (unstable) (2024-06-05 r86695 ucrt) -- "Unsuffered Consequences" Copyright (C) 2024 The R Foundation for Statistical Computing Platform: x86_64-w64-mingw32/x64 R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > ## PR#16744: ordering of variance weights (failed in nlme <= 3.1-149) > library("nlme") > fm3 <- gls(follicles ~ sin(2*pi*Time) + cos(2*pi*Time), Ovary, + correlation = corAR1(form = ~ 1 | Mare), + weights = ~as.integer(as.character(Mare))) # fixed variance weights > stopifnot( + identical( + getVarCov(fm3, individual = 3), + getVarCov(fm3, individual = levels(Ovary$Mare)[3]) + ), + all.equal( + vapply(as.character(1:11), + function (id) getVarCov(fm3, individual = id)[1,1], + 0, USE.NAMES = FALSE), + fm3$sigma^2 * (1:11) + ) + ) > > ## lme method had a similar issue for data not ordered by levels(group) > ## is.unsorted(Orthodont$Subject) # TRUE > fm4 <- lme(distance ~ age, Orthodont, weights = ~as.integer(Subject)) > covmats <- getVarCov(fm4, individuals = levels(Orthodont$Subject), + type = "conditional") > stopifnot( + all.equal( + vapply(covmats, "[", 0, 1, 1), + fm4$sigma^2 * seq_len(nlevels(Orthodont$Subject)), + check.attributes = FALSE + ) + ) > > > ## PR#16806: 1-observation groups in corSpatial fits (failed in nlme <= 3.1-164) > data("Phenobarb") > pheno <- subset(Phenobarb, !is.na(conc)) > stopifnot(sum(getGroups(pheno) == "28") == 1) # Subject 28 has only 1 obs. > lme1 <- lme(conc ~ time, data = pheno, random = ~1 | Subject, + correlation = corExp(form = ~time | Subject)) > condVarCov <- getVarCov(lme1, type = "conditional", individuals = "28") > ## gave Error in dimnames(cond.var) <- list(1:nrow(cond.var), 1:ncol(cond.var)) : > ## length of 'dimnames' [2] not equal to array extent > stopifnot(all.equal(unname(diag(condVarCov[[1]])), lme1$sigma^2)) > ## same for gls(): > gls1 <- gls(conc ~ time, data = pheno, + correlation = corExp(form = ~time | Subject)) > margVarCov <- getVarCov(gls1, individual = "28") > ## gave Error in rep(1, nrow(S)) : invalid 'times' argument > stopifnot(all.equal(diag(margVarCov), gls1$sigma^2)) > > proc.time() user system elapsed 0.43 0.07 0.45