Skip to content

Commit 01ada6c

Browse files
committed
Fix error in sanity checks
1 parent 2029646 commit 01ada6c

File tree

3 files changed

+16
-20
lines changed

3 files changed

+16
-20
lines changed

R/tmvnorm.R

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ ptmvnorm <- function(q, mu, sigma, lb, ub, log = FALSE, type = c("mc", "qmc"), B
157157
pb <- switch(type,
158158
mc = mvNcdf(l = lb - mu, u = pmin(ub, q[i,]) - mu, Sig = sigma, n = B)$prob,
159159
qmc = mvNqmc(l = lb - mu, u = pmin(ub, q[i,]) - mu, Sig = sigma, n = B)$prob)
160-
prob[i] <- ifelse(log, pmin(0, log(prob[i]) - log(kst)), pmin(1, pmax(0, prob[i]/kst)))
160+
prob[i] <- ifelse(log, pmin(0, log(pb) - log(kst)), pmin(1, pb/kst))
161161
}
162162
}
163163
return(prob)

R/tmvt.R

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -140,26 +140,22 @@ ptmvt <- function(q, mu, sigma, df, lb, ub, type = c("mc", "qmc"), log = FALSE,
140140
}
141141
stopifnot(all(lb < ub))
142142
prob <- rep(0, nrow(q))
143-
143+
kst <- switch(type,
144+
mc = mvTcdf(l = lb - mu, u = ub - mu, df = df, Sig = sigma, n = B)$prob,
145+
qmc = mvTqmc(l = lb - mu, u = ub - mu, df = df, Sig = sigma, n = B)$prob)
144146
for(i in 1:nrow(q)){
145147
if(all(q[i,] >= ub)){
146-
prob[i] <- 1
148+
prob[i] <- ifelse(log, 0, 1)
147149
} else if(any(q[i,] <= lb)){
148-
prob[i] <- 0
150+
prob[i] <- ifelse(log, -Inf, 0)
149151
} else{
150-
prob[i] <- switch(type,
151-
mc = mvTcdf(l = lb - mu, u = pmin(ub, q[i,]) - mu, df = df, Sig = sigma, n = B)$prob,
152-
qmc = mvTqmc(l = lb - mu, u = pmin(ub, q[i,]) - mu, df = df, Sig = sigma, n = B)$prob)
152+
pb <- switch(type,
153+
mc = mvTcdf(l = lb - mu, u = pmin(ub, q[i,]) - mu, df = df, Sig = sigma, n = B)$prob,
154+
qmc = mvTqmc(l = lb - mu, u = pmin(ub, q[i,]) - mu, df = df, Sig = sigma, n = B)$prob)
155+
prob[i] <- ifelse(log, pmin(0, log(pb) - log(kst)), pmin(1, pb/kst))
153156
}
154157
}
155-
kst <- switch(type,
156-
mc = mvTcdf(l = lb - mu, u = ub - mu, df = df, Sig = sigma, n = B)$prob,
157-
qmc = mvTqmc(l = lb - mu, u = ub - mu, df = df, Sig = sigma, n = B)$prob)
158-
if(log){
159-
return(pmin(0, log(prob) - log(kst)))
160-
} else{
161-
return(pmin(1,pmax(0, prob/kst)))
162-
}
158+
return(prob)
163159
}
164160

165161
#' Random number generator for the truncated multivariate Student distribution.

tests/testthat/test-wrappers.R

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ df2 <- 300
88
x = c(100, 50)
99

1010
testthat::test_that("Truncated normal DF (MC versus QMC) give similar answers", {
11-
skip_on_cran()
11+
testthat::skip_on_cran()
1212
testthat::expect_equal(ptmvnorm(x, mu=mu, sigma=sigma, lb=lb, ub=ub, log=FALSE, type="qmc"),
1313
ptmvnorm(x, mu=mu, sigma=sigma, lb=lb, ub=ub, log=FALSE, type="mc"),
1414
tolerance = 1e-4)
@@ -18,7 +18,7 @@ testthat::test_that("Truncated normal DF (MC versus QMC) give similar answers",
1818
})
1919

2020
testthat::test_that("Student with large df gives same answer as normal", {
21-
skip_on_cran()
21+
testthat::skip_on_cran()
2222
testthat::expect_equal(ptmvnorm(x, B = 1e6, sigma=sigma, lb=lb, ub=ub, log=FALSE, type="qmc"),
2323
ptmvt(x, B = 1e6, sigma=sigma, lb=lb, ub=ub, df = 300, log=FALSE, type="qmc"),
2424
tolerance = 2e-3)
@@ -55,7 +55,7 @@ D <- 10
5555
muV <- 1:D
5656
Smat <- diag(0.5, D) + matrix(0.5, D, D)
5757
testthat::test_that("Expectation of (truncated) elliptical distributions", {
58-
skip_on_cran()
58+
testthat::skip_on_cran()
5959
testthat::expect_equal(colMeans(rtmvnorm(n = B, sigma = Smat)),
6060
rep(0, D), tolerance = 5/sqrt(B))
6161
testthat::expect_equal(colMeans(rtmvnorm(n = B, mu = muV, sigma = Smat)),
@@ -72,7 +72,7 @@ testthat::test_that("Expectation of (truncated) elliptical distributions", {
7272
lb <- rnorm(n = D, mean = 0, sd = 10)
7373
ub <- lb + rgamma(D, shape = 4, rate = 1)
7474
testthat::test_that("Bounds of simulated variables", {
75-
skip_on_cran()
75+
testthat::skip_on_cran()
7676
testthat::expect_true(isTRUE(all(apply(rtmvnorm(n = 1e4, lb = lb, ub = ub, mu = muV, 100*Smat), 2, min) > lb)))
7777
testthat::expect_true(isTRUE(all(apply(rtmvnorm(n = 1e4, lb = lb, ub = ub, mu = muV, 100*Smat), 2, min) < ub)))
7878
testthat::expect_true(isTRUE(all(apply(rtmvt(n = 1e4, df = 3, lb = lb, ub = ub, mu = muV, 100*Smat), 2, min) > lb)))
@@ -107,7 +107,7 @@ testthat::test_that("Untruncated density agrees with that in the mvtnorm package
107107
d <- 15
108108
sigma <- 0.5 * (diag(d) + matrix(1, d, d))
109109
testthat::test_that("Known probability", {
110-
skip_on_cran()
110+
testthat::skip_on_cran()
111111
testthat::expect_equivalent((d+1)*pmvnorm(sigma = sigma, lb = rep(0, d), type = "qmc", B = B),
112112
1, tolerance = 1/sqrt(B))
113113
})

0 commit comments

Comments
 (0)