library(aster) set.seed(42) # needed because of the change in R function "sample" in R-devel suppressWarnings(RNGversion("3.5.2")) nind <- 25 nnode <- 5 ncoef <- nnode + 1 fam <- c(1, 1, 2, 3, 3) pred <- c(0, 1, 1, 2, 3) modmat <- array(0, c(nind, nnode, ncoef)) modmat[ , , 1] <- 1 for (i in 2:nnode) modmat[ , i, i] <- 1 modmat[ , , ncoef] <- rnorm(nind * nnode) beta <- rnorm(ncoef) / 10 phi <- matrix(modmat, ncol = ncoef) %*% beta phi <- matrix(phi, ncol = nnode) theta.origin <- matrix(as.double(0), nind, nnode) aster:::setfam(fam.default()) phi.origin <- .C(aster:::C_aster_theta2phi, nind = as.integer(nind), nnode = as.integer(nnode), pred = as.integer(pred), fam = as.integer(fam), theta = as.double(theta.origin), phi = matrix(as.double(0), nind, nnode))$phi theta <- .C(aster:::C_aster_phi2theta, nind = as.integer(nind), nnode = as.integer(nnode), pred = as.integer(pred), fam = as.integer(fam), phi = as.double(phi), theta = matrix(as.double(0), nind, nnode))$theta root <- sample(1:3, nind * nnode, replace = TRUE) root <- matrix(root, nind, nnode) x <- raster(theta, pred, fam, root) out0 <- aster(x, root, pred, fam, modmat, type = "unco", method = "trust") out1 <- aster(x, root, pred, fam, modmat, type = "unco", method = "nlm") out2 <- aster(x, root, pred, fam, modmat, type = "unco", method = "CG") out3 <- aster(x, root, pred, fam, modmat, type = "unco", method = "L-B") all.equal(out0$coefficients, out1$coefficients) all.equal(out1$coefficients, out2$coefficients) all.equal(out2$coefficients, out3$coefficients, tol = 1e-7) all.equal(out3$coefficients, out0$coefficients, tol = 1e-7) out4 <- aster(x, root, pred, fam, modmat, type = "unco", method = "trust", origin = theta.origin) pout4c <- out4$coefficients pout0c <- out0$coefficients foo <- as.numeric(out0$origin) + matrix(out0$modmat, ncol = ncoef) %*% out0$coefficients bar <- as.numeric(out4$origin) + matrix(out4$modmat, ncol = ncoef) %*% out4$coefficients all.equal(foo, bar) all.equal(phi.origin, out0$origin) out0 <- aster(x, root, pred, fam, modmat, type = "cond", method = "trust") out1 <- aster(x, root, pred, fam, modmat, type = "cond", method = "nlm") out2 <- aster(x, root, pred, fam, modmat, type = "cond", method = "CG") out3 <- aster(x, root, pred, fam, modmat, type = "cond", method = "L-B") all.equal(out0$coefficients, out1$coefficients) all.equal(out1$coefficients, out2$coefficients) all.equal(out2$coefficients, out3$coefficients) all.equal(out3$coefficients, out0$coefficients) pout0c.too <- out0$coefficients foo <- new.env(parent = emptyenv()) bar <- suppressWarnings(try(load("aster.rda", foo), silent = TRUE)) if (inherits(bar, "try-error")) { save(pout4c, pout0c, pout0c.too, file = "aster.rda") } else { print(all.equal(pout4c, foo$pout4c)) print(all.equal(pout0c, foo$pout0c)) print(all.equal(pout0c.too, foo$pout0c.too)) }