Skip to content

Commit

Permalink
version 1.2-5
Browse files Browse the repository at this point in the history
  • Loading branch information
thothorn authored and cran-robot committed May 21, 2024
1 parent 126b767 commit 6d98821
Show file tree
Hide file tree
Showing 30 changed files with 2,162 additions and 1,455 deletions.
8 changes: 4 additions & 4 deletions DESCRIPTION
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Package: mvtnorm
Title: Multivariate Normal and t Distributions
Version: 1.2-4
Date: 2023-11-27
Version: 1.2-5
Date: 2024-05-18
Authors@R: c(person("Alan", "Genz", role = "aut"),
person("Frank", "Bretz", role = "aut"),
person("Tetsuhisa", "Miwa", role = "aut"),
Expand All @@ -24,7 +24,7 @@ Suggests: qrng, numDeriv
License: GPL-2
URL: http://mvtnorm.R-forge.R-project.org
NeedsCompilation: yes
Packaged: 2023-11-27 11:38:16 UTC; hothorn
Packaged: 2024-05-21 14:29:39 UTC; hothorn
Author: Alan Genz [aut],
Frank Bretz [aut],
Tetsuhisa Miwa [aut],
Expand All @@ -36,4 +36,4 @@ Author: Alan Genz [aut],
Torsten Hothorn [aut, cre] (<https://orcid.org/0000-0001-8301-0471>)
Maintainer: Torsten Hothorn <[email protected]>
Repository: CRAN
Date/Publication: 2023-11-27 14:20:02 UTC
Date/Publication: 2024-05-21 17:10:02 UTC
58 changes: 29 additions & 29 deletions MD5
Original file line number Diff line number Diff line change
@@ -1,36 +1,36 @@
720dd72866010d03978410ecbb98ca5e *DESCRIPTION
ecd520a67763973a40e5a108897d4f5e *NAMESPACE
ea0431862d0fdd6f1c7eb4ff4cb63a8b *DESCRIPTION
f3e7b6e53fe0e602808359a3f39e55a9 *NAMESPACE
95cc7a63663de9d9db50eeb7f6b7f3cc *R/lpmvnorm.R
eec923c2eaf99726daace26a751b8820 *R/ltMatrices.R
e5f03c7bc26e070083b26a207df1a473 *R/ltMatrices.R
ca05e05ca25ae52b9a8630f2b698fbf7 *R/mvnorm.R
d6fa00cf2de3de94137a324751c699b5 *R/mvt.R
27cb73940c326c1e2bc4e7b294895eeb *R/mvt.R
ccd0495f9e9ad30e9f136c5c41cc3a03 *R/noisy-root.R
a58509a76c614fea41250fa767c64a49 *R/tvpack.R
5e639fd960e2108162918d60b27afd0e *build/partial.rdb
7c429129fac0233643dffd64ddedbde3 *build/vignette.rds
468c054d0ef43dd8e7835772599869e3 *R/tvpack.R
c1009b6253905af4745815e16d095cd7 *build/partial.rdb
2ac3854f4f3735f6dbc3d2eedea280a7 *build/vignette.rds
5d3f52c685942a64b550023c19179ddb *cleanup
2a44eee6dc12d03d74f49d257fe871a3 *inst/CITATION
ceb9f3d20b3e0f3ecd95cefd43449da1 *inst/C_API_Example/DESCRIPTION
ca4c35956e7a8aa253e2c52cd49f0d99 *inst/C_API_Example/NAMESPACE
990127bb625b41c7181a653020e3f6a9 *inst/C_API_Example/R/test.R
5c4bbffc1a0108c090cfa2dbb1918d2d *inst/C_API_Example/src/test.c
64fd633725dcd93cdd836e3535f19788 *inst/C_API_Example/tests/test.R
17d6bd360ca43dbfd3a288edc25eb576 *inst/NEWS.Rd
c272376114253739752bd13c5eb43cb9 *inst/NEWS.old
73e21a346386350ffebe0b09cafa5ad5 *inst/doc/MVT_Rnews.R
e83251e0ceb0e3a2aec9f3d101e41ea6 *inst/doc/MVT_Rnews.Rnw
9ff318fab26f31c655234e5119ed3d9f *inst/doc/MVT_Rnews.pdf
69479718cce50658d8d5853b25aa8906 *inst/doc/lmvnorm_src.R
723c4102000e9ae408427caad6251acb *inst/doc/lmvnorm_src.Rnw
b201676d9a471dfa6e2603be6e05839a *inst/doc/lmvnorm_src.pdf
e4eae4bc2b387ca2f05f31186261d431 *inst/include/mvtnorm.h
28832aeb25271b94d9a46483c2920475 *inst/NEWS.Rd
18cb4997813a62c609ac2519f4013a4b *inst/NEWS.old
1b063d23365215f4e5822ba94010c85c *inst/doc/MVT_Rnews.R
8f949c53fd5c9bfbf8f0949c949a6682 *inst/doc/MVT_Rnews.Rnw
d22895e0e9b2abc51c146ffccf755a3a *inst/doc/MVT_Rnews.pdf
f98ed63c79d908c52ba891af8c5b6b3f *inst/doc/lmvnorm_src.R
dcb1467158dc0bda0535f843e3ee5aa9 *inst/doc/lmvnorm_src.Rnw
ae950bcb5f12d8ece0e9a89f12c3e300 *inst/doc/lmvnorm_src.pdf
a07e1e3c21995f525affb30be9eb647f *inst/include/mvtnorm.h
2ac853ab98c7223bbca7e418096966fb *inst/include/mvtnormAPI.h
a8bf3b0a605ca47e04cf69f15dba76b7 *inst/litdb.bib
91a133fc5c7893d4984213a2dfbe9e8c *inst/litdb.bib
48d06df1c0ede2af2082380f04f109a0 *man/Mvnorm.Rd
aeea1ca8a79e11a6bc318f348e568e69 *man/Mvt.Rd
9c7f78f788a715989e00991bac0534df *man/algorithms.Rd
eedaca8ee45ebcc103df9269348636dc *man/lpmvnorm.Rd
a2891bf8674574ddf7c596a843e562e0 *man/ltMatrices.Rd
f9501be7193f4ee7ed80c8efab278ea9 *man/ltMatrices.Rd
b6e7f27c6865a85c9d4ff87192be81cb *man/margcond.Rd
31e6da03c2a15ef80a6668a1d068d670 *man/mvtnorm-package.Rd
e5d97a5d95fdf3fec155f923acbe117f *man/pmvnorm.Rd
Expand All @@ -40,30 +40,30 @@ a32881a25b6d380f12082677fd9e7c5e *man/qmvt.Rd
bca5c4987a057c2a6bab0cd6bbebed5b *src/C_FORTRAN_interface.c
1a3e64eb2af2ed6d6fbb037da1bc216f *src/Makevars
c0e5ecc21173046ba5cf98a12b16599c *src/lpmvnorm.c
47c47d527ea29729305f11c1468abe94 *src/ltMatrices.c
c877a4b0edbdfa5ec08bdfbc1033d6e3 *src/ltMatrices.c
f64456aad2c956a18af275f09a013bb3 *src/miwa.c
b46cb432899a2857561790e63a41396a *src/miwa.h
b9866a363a76d1fa0ae89a5d88142379 *src/mvt.f
8c4b7e4643cb9f20f61b4752bf4af136 *src/mvtnorm-init.c
e4eae4bc2b387ca2f05f31186261d431 *src/mvtnorm.h
c9d2b03e65f4c0c394d6be806351a28f *src/mvtnorm-init.c
a07e1e3c21995f525affb30be9eb647f *src/mvtnorm.h
2ac853ab98c7223bbca7e418096966fb *src/mvtnormAPI.h
866e839b3972fe5c50d7e3787b6fc1ca *src/tvpack.f
a8da8d6e8672b1078e8bd4b93fb61938 *tests/Examples/mvtnorma-Ex.Rout.save
8577b286912ff81f7db670aed3024ba4 *tests/bugfix-tests.R
06757030c4ee95433f5b2af1623cbe73 *tests/bugfix-tests.Rout.save
b715d9794bcc26aa91f5dc403c047d5b *tests/bugfix-tests.Rout.save
4226d0c8718a5785675e5dde917f2a10 *tests/dmvnorm-Ex.R
da0a2380a4431dca695d098a5566250a *tests/plmvnorm-Ex.R
f0466c8e3a5ca12105b9d041fdd2e3d5 *tests/plmvnorm-Ex.Rout.save
85383c4bcff8a13afd7b21d215ed7d8c *tests/regtest-TVPACK.R
ad2400b5d93f61441ec68d93c6c3b93a *tests/regtest-TVPACK.Rout.save
37453737be0fbea6a8f07cff5dcaac1b *tests/plmvnorm-Ex.Rout.save
d9034636261183332943f06a53b60374 *tests/regtest-TVPACK.R
1b25011e35567fec9ac70f48f3039272 *tests/regtest-TVPACK.Rout.save
870aa71dd88f6223f55a48c18160531c *tests/regtest-scores.R
4476e684bec45b38bedc61940ada7836 *tests/regtest-scores.Rout.save
687306863999aefde464e78798856d6b *tests/rmvnorm.R
0fc8c5d63a61b4e378d339f1cbecb462 *tests/slpmvnorm.R
ffb7fa80edcd873dfca1ad13dd718da0 *tests/test-getInt.R
8433ca0a135c017df7229030259bc9c1 *tests/test-noisy-root.R
b9c5f09cb4556e20e5e2a3b3f168c88a *tests/test-noisy-root.Rout.save
e83251e0ceb0e3a2aec9f3d101e41ea6 *vignettes/MVT_Rnews.Rnw
a8bf3b0a605ca47e04cf69f15dba76b7 *vignettes/litdb.bib
723c4102000e9ae408427caad6251acb *vignettes/lmvnorm_src.Rnw
5359ce2dc030adaac8e993acde28786b *vignettes/lmvnorm_src.Rout.save
8f949c53fd5c9bfbf8f0949c949a6682 *vignettes/MVT_Rnews.Rnw
91a133fc5c7893d4984213a2dfbe9e8c *vignettes/litdb.bib
dcb1467158dc0bda0535f843e3ee5aa9 *vignettes/lmvnorm_src.Rnw
257a486cd45b4c1e8cda92dcafa304c6 *vignettes/lmvnorm_src.Rout.save
5 changes: 4 additions & 1 deletion NAMESPACE
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ importFrom("stats",
cov2cor, optim, coef, glm, pcauchy, qcauchy, predict, quasi)

export(rmvnorm, dmvnorm, pmvnorm, pmvt, rmvt, qmvnorm, qmvt, dmvt,
GenzBretz, Miwa, TVPACK, ltMatrices, Tcrossprod, Crossprod, diagonals,
GenzBretz, Miwa, TVPACK, ltMatrices, syMatrices, as.syMatrices, Tcrossprod, Crossprod, diagonals,
chol2cov, invchol2chol, chol2invchol, invchol2cov,
invchol2pre, chol2pre, Dchol, invcholD, chol2cor, invchol2cor,
invchol2pc, chol2pc, "diagonals<-", vectrick, Lower_tri,
Expand Down Expand Up @@ -36,6 +36,9 @@ S3method("diagonals<-", "ltMatrices")
S3method("diagonals<-", "syMatrices")
S3method("chol", "syMatrices")
S3method("aperm", "ltMatrices")
S3method("Mult", "ltMatrices")
S3method("Mult", "syMatrices")
S3method("Mult", "default")
### internal methods
S3method("probval", "GenzBretz")
S3method("probval", "Miwa")
Expand Down
92 changes: 71 additions & 21 deletions R/ltMatrices.R
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,16 @@ ltMatrices <- function(object, diag = FALSE, byrow = FALSE, names = TRUE) {
object
}

# syMatrices

as.syMatrices <- function(object) {
stopifnot(inherits(object, "ltMatrices"))
class(object)[1L] <- "syMatrices"
return(object)
}
syMatrices <- function(object, diag = FALSE, byrow = FALSE, names = TRUE)
as.syMatrices(ltMatrices(object = object, diag = diag, byrow = byrow, names = names))

# dim ltMatrices

dim.ltMatrices <- function(x) {
Expand Down Expand Up @@ -330,12 +340,13 @@ diagonals.integer <- function(x, ...)
# mult ltMatrices

### C %*% y
Mult <- function(x, y, transpose = FALSE) {

if (!inherits(x, "ltMatrices")) {
if (!transpose) return(x %*% y)
return(crossprod(x, y))
}
Mult <- function(x, y, ...)
UseMethod("Mult")
Mult.default <- function(x, y, transpose = FALSE, ...) {
if (!transpose) return(x %*% y)
return(crossprod(x, y))
}
Mult.ltMatrices <- function(x, y, transpose = FALSE, ...) {

# extract slots

Expand All @@ -346,6 +357,7 @@ Mult <- function(x, y, transpose = FALSE) {
dn <- dimnames(x)


stopifnot(is.numeric(y))
if (!is.matrix(y)) y <- matrix(y, nrow = d[2L], ncol = d[1L])
N <- ifelse(d[1L] == 1, ncol(y), d[1L])
stopifnot(nrow(y) == d[2L])
Expand All @@ -355,16 +367,18 @@ Mult <- function(x, y, transpose = FALSE) {
# mult ltMatrices transpose

if (transpose) {
J <- dim(x)[2L]
if (dim(x)[1L] == 1L) x <- x[rep(1, N),]
ax <- as.array(x)
ay <- array(y[rep(1:J, J),,drop = FALSE], dim = dim(ax),
dimnames = dimnames(ax))
ret <- ay * ax
### was: return(margin.table(ret, 2:3))
ret <- matrix(colSums(matrix(ret, nrow = dim(ret)[1L])),
nrow = dim(ret)[2L], ncol = dim(ret)[3L],
dimnames = dimnames(ret)[-1L])
x <- ltMatrices(x, byrow = FALSE)

class(x) <- class(x)[-1L]
storage.mode(x) <- "double"
storage.mode(y) <- "double"

ret <- .Call(mvtnorm_R_ltMatrices_Mult_transpose, x, y, as.integer(N),
as.integer(d[2L]), as.logical(diag))

rownames(ret) <- dn[[2L]]
if (length(dn[[1L]]) == N)
colnames(ret) <- dn[[1L]]
return(ret)
}

Expand All @@ -384,6 +398,30 @@ Mult <- function(x, y, transpose = FALSE) {
return(ret)
}

# mult syMatrices

Mult.syMatrices <- function(x, y, ...) {

# extract slots

diag <- attr(x, "diag")
byrow <- attr(x, "byrow")
d <- dim(x)
J <- d[2L]
dn <- dimnames(x)


class(x)[1L] <- "ltMatrices"
stopifnot(is.numeric(y))
if (!is.matrix(y)) y <- matrix(y, nrow = d[2L], ncol = d[1L])
N <- ifelse(d[1L] == 1, ncol(y), d[1L])
stopifnot(nrow(y) == d[2L])
stopifnot(ncol(y) == N)

ret <- Mult(x, y) + Mult(x, y, transpose = TRUE) - y * c(diagonals(x))
return(ret)
}

# solve ltMatrices

solve.ltMatrices <- function(a, b, transpose = FALSE, ...) {
Expand Down Expand Up @@ -461,8 +499,7 @@ solve.ltMatrices <- function(a, b, transpose = FALSE, ...) {
rownames(ret) <- dn[[2L]]
} else {
ret <- ltMatrices(ret, diag = TRUE, byrow = FALSE, names = dn[[2L]])
ret <- ltMatrices(ret, byrow = byrow_orig)
class(ret)[1L] <- "syMatrices"
ret <- as.syMatrices(ltMatrices(ret, byrow = byrow_orig))
}
return(ret)
}
Expand Down Expand Up @@ -937,7 +974,8 @@ ldmvnorm <- function(obs, mean = 0, chol, invchol, logLik = TRUE) {
N <- ifelse(N == 1, p, N)
J <- dim(chol)[2L]
obs <- .check_obs(obs = obs, mean = mean, J = J, N = N)
logretval <- colSums(dnorm(solve(chol, obs), log = TRUE))
z <- solve(chol, obs)
logretval <- .colSumsdnorm(z)
if (attr(chol, "diag"))
logretval <- logretval - colSums(log(diagonals(chol)))

Expand All @@ -951,9 +989,10 @@ ldmvnorm <- function(obs, mean = 0, chol, invchol, logLik = TRUE) {
N <- ifelse(N == 1, p, N)
J <- dim(invchol)[2L]
obs <- .check_obs(obs = obs, mean = mean, J = J, N = N)
## use dnorm (gets the normalizing factors right)
## NOTE: obs is (J x N)
logretval <- colSums(dnorm(Mult(invchol, obs), log = TRUE))
## dnorm takes rather long
z <- Mult(invchol, obs)
logretval <- .colSumsdnorm(z)
## note that the second summand gets recycled the correct number
## of times in case dim(invchol)[1L] == 1 but ncol(obs) > 1
if (attr(invchol, "diag"))
Expand All @@ -966,6 +1005,17 @@ ldmvnorm <- function(obs, mean = 0, chol, invchol, logLik = TRUE) {
return(logretval)
}

# colSumsdnorm ltMatrices

.colSumsdnorm <- function(z) {
stopifnot(is.numeric(z))
if (!is.matrix(z))
z <- matrix(z, nrow = 1, ncol = length(z))
ret <- .Call(mvtnorm_R_ltMatrices_colSumsdnorm, z, ncol(z), nrow(z))
names(ret) <- colnames(z)
return(ret)
}

# sldmvnorm

sldmvnorm <- function(obs, mean = 0, chol, invchol, logLik = TRUE) {
Expand Down
Loading

0 comments on commit 6d98821

Please sign in to comment.