Nothing
#context("GP functions 2")
## Example shape parameters
# Positive
xi1 <- 0.1
# Zero
xi2 <- 0
# Negative
xi3 <- -1e-7
up <- -1 / xi3
## Example input vectors
# For testing pdf, log_pdf and cdf
xvec <- c(0, Inf, NA)
x1 <- xvec
x2 <- xvec
x3 <- c(up, xvec)
# For testing quantile
pvec <- c(0, 0.25, 0.5, 0.75, 1, NA)
test_that("rgp, length of output", {
expect_length(rgp(n = 1, shape = xi1), 1)
expect_length(rgp(n = 100, shape = xi1), 100)
expect_length(rgp(n = 0, shape = xi1), 0)
expect_error(rgp(n = -2, shape = xi1))
expect_length(rgp(n = 1, shape = xi2), 1)
expect_length(rgp(n = 100, shape = xi2), 100)
expect_length(rgp(n = 0, shape = xi2), 0)
expect_error(rgp(n = -2, shape = xi2))
expect_length(rgp(n = 1, shape = xi3), 1)
expect_length(rgp(n = 100, shape = xi3), 100)
expect_length(rgp(n = 0, shape = xi3), 0)
expect_error(rgp(n = -2, shape = xi3))
})
test_that("dgp, values and length of output", {
p <- pvec[2:4]
qq <- qgp(p, shape = xi1)
expect_equal(dgp(x1, shape = xi1), c(1, 0, NA))
expect_equal(dgp(qq, shape = xi1), (1 - p) ^ (1 + xi1))
expect_length(dgp(seq_len(0), shape = xi1), 0)
expect_length(dgp(seq_len(1), shape = xi1), 1)
expect_length(dgp(seq_len(10), shape = xi1), 10)
qq <- qgp(p, shape = xi2)
expect_equal(dgp(x2, shape = xi2), c(1, 0, NA))
expect_equal(dgp(qq, shape = xi2), (1 - p) ^ (1 + xi2))
expect_length(dgp(seq_len(0), shape = xi2), 0)
expect_length(dgp(seq_len(1), shape = xi2), 1)
expect_length(dgp(seq_len(10), shape = xi2), 10)
qq <- qgp(p, shape = xi3)
expect_equal(dgp(x3, shape = xi3), c(0, 1, 0, NA))
expect_equal(dgp(qq, shape = xi3), (1 - p) ^ (1 + xi3))
expect_length(dgp(seq_len(0), shape = xi3), 0)
expect_length(dgp(seq_len(1), shape = xi3), 1)
expect_length(dgp(seq_len(10), shape = xi3), 10)
})
test_that("pgp, values and length of output", {
expect_equal(pgp(x1, shape = xi1), c(0, 1, NA))
expect_length(pgp(seq_len(0), shape = xi1), 0)
expect_length(pgp(seq_len(1), shape = xi1), 1)
expect_length(pgp(seq_len(10), shape = xi1), 10)
expect_equal(pgp(x2, shape = xi2), c(0, 1, NA))
expect_length(pgp(seq_len(0), shape = xi2), 0)
expect_length(pgp(seq_len(1), shape = xi2), 1)
expect_length(pgp(seq_len(10), shape = xi2), 10)
expect_equal(pgp(x3, shape = xi3), c(1, 0, 1, NA))
expect_length(pgp(seq_len(0), shape = xi3), 0)
expect_length(pgp(seq_len(1), shape = xi3), 1)
expect_length(pgp(seq_len(10), shape = xi3), 10)
})
test_that("qgp, values and length of output", {
q1 <- ((1 - pvec[2:4]) ^ (-xi1) - 1) / xi1
expect_equal(qgp(pvec, shape = xi1), c(0, q1, Inf, NA))
expect_length(qgp(seq_len(0), shape = xi1), 0)
expect_length(qgp(c(0, 1), shape = xi1), 2)
expect_length(qgp(seq_len(10) / 10, shape = xi1), 10)
q2 <- -log(1 - pvec[2:4])
expect_equal(qgp(pvec, shape = xi2), c(0, q2, Inf, NA))
expect_length(qgp(seq_len(0), shape = xi2), 0)
expect_length(qgp(c(0, 1), shape = xi2), 2)
expect_length(qgp(seq_len(10) / 10, shape = xi2), 10)
q3 <- ((1 - pvec[2:4]) ^ (-xi3) - 1) / xi3
expect_equal(qgp(pvec, shape = xi3), c(0, q3, up, NA))
expect_length(qgp(seq_len(0), shape = xi3), 0)
expect_length(qgp(c(0, 1), shape = xi3), 2)
expect_length(qgp(seq_len(10) / 10, shape = xi3), 10)
})
test_that("pgp and qgp are consistent", {
expect_equal(pgp(qgp(pvec, shape = xi1), shape = xi1), pvec)
expect_equal(pgp(qgp(pvec, shape = xi2), shape = xi2), pvec)
expect_equal(pgp(qgp(pvec, shape = xi3), shape = xi3), pvec)
})
# Add the test that caused a problem in distributions3
## Example distributions
# Positive shape, finite lower end point
xi1 <- 0.1
g1 <- list(mu = 0, scale = 1, xi = xi1)
class(g1) <- c("GP", "distribution")
# Zero shape
xi2 <- 0
g2 <- list(mu = 0, scale = 1, xi = xi2)
class(g2) <- c("GP", "distribution")
# Negative shape, finite upper end point
xi3 <- -1e-7
g3 <- list(mu = 0, scale = 1, xi = xi3)
class(g3) <- c("GP", "distribution")
up <- -1 / xi3
log_GP_pdf <- function(d, x) {
revdbayes::dgp(x = x, loc = d$mu, scale = d$scale, shape = d$xi, log = TRUE)
}
## Example input vectors
# For testing pdf, log_pdf and cdf
xvec <- c(0, Inf, NA)
x1 <- xvec
x2 <- xvec
x3 <- c(up, xvec)
test_that("log_pdf.GP works correctly", {
expect_equal(log_GP_pdf(g1, x1), c(0, -Inf, NA))
expect_length(log_GP_pdf(g1, seq_len(0)), 0)
expect_length(log_GP_pdf(g1, seq_len(1)), 1)
expect_length(log_GP_pdf(g1, seq_len(10)), 10)
expect_equal(log_GP_pdf(g2, x2), c(0, -Inf, NA))
expect_length(log_GP_pdf(g2, seq_len(0)), 0)
expect_length(log_GP_pdf(g2, seq_len(1)), 1)
expect_length(log_GP_pdf(g2, seq_len(10)), 10)
expect_equal(log_GP_pdf(g3, x3), c(-Inf, 0, -Inf, NA))
expect_length(log_GP_pdf(g3, seq_len(0)), 0)
expect_length(log_GP_pdf(g3, seq_len(1)), 1)
expect_length(log_GP_pdf(g3, seq_len(10)), 10)
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.