| Title: | Bimodal Gumbel Distribution | 
| Version: | 0.0.3 | 
| Description: | Bimodal Gumbel distribution. General functions for performing extreme value analysis. | 
| Imports: | MCMCpack, MASS, quantreg, SparseM, coda, stats | 
| License: | MIT + file LICENSE | 
| SystemRequirements: | gcc (>= 4.0), gfortran, clang++ | 
| NeedsCompilation: | yes | 
| URL: | https://CRAN.R-project.org/package=bgumbel | 
| Language: | en-US | 
| Encoding: | UTF-8 | 
| LazyData: | false | 
| Date: | 2021-03-31 | 
| RoxygenNote: | 7.1.1 | 
| Packaged: | 2021-03-31 21:14:59 UTC; pcbrom | 
| Author: | Pedro C. Brom | 
| Maintainer: | Pedro C. Brom <pcbrom@gmail.com> | 
| Repository: | CRAN | 
| Date/Publication: | 2021-03-31 22:10:07 UTC | 
Bimodal Gumbel: Density Function
Description
Bimodal Gumbel: Density Function
Usage
dbgumbel(x, mu, sigma, delta)
Arguments
| x | Domain. | 
| mu | First location parameter. | 
| sigma | Scale parameter. | 
| delta | Second location parameter. | 
Value
Vector.
Examples
dbgumbel(x = 0, mu = -2, sigma = 1, delta = -1)
curve(dbgumbel(x, mu = -2, sigma = 1, delta = -1), xlim = c(-5, 10), ylim= c(0, .4))
integrate(dbgumbel, mu = -2, sigma = 1, delta = -1, lower = -5, upper = 0)
Bimodal Gumbel: Theoretical E(X)
Description
Bimodal Gumbel: Theoretical E(X)
Usage
m1bgumbel(mu, sigma, delta)
Arguments
| mu | First location parameter. | 
| sigma | Scale parameter. | 
| delta | Second location parameter. | 
Value
Vector.
Examples
(EX <- m1bgumbel(mu = -2, sigma = 1, delta = -1))
# Comparison: Theoretical E(X) and empirical mean
x <- rbgumbel(100000, mu = -2, sigma = 1, delta = -1)
mean(x)
abs(EX - mean(x))/abs(EX) # relative error
# grid 1
mu <- seq(-5, 5, length.out = 100)
delta <- seq(-5, 5, length.out = 100)
z <- outer(
  X <- mu,
  Y <- delta,
  FUN = function(x, y) m1bgumbel(mu = x, sigma = 1, delta = y)
)
persp(x = mu, y = delta, z = z, theta = -60, ticktype = 'detailed')
# grid 2
mu <- seq(-5, 5, length.out = 100)
delta <- seq(-5, 5, length.out = 100)
sigmas <- seq(.1, 10, length.out = 20)
for (sigma in sigmas) {
 z <- outer(
   X <- mu,
   Y <- delta,
    FUN = function(x, y) m1bgumbel(mu = x, sigma = sigma, delta = y)
 )
 persp(x = mu, y = delta, z = z, theta = -60, zlab = 'E(X)')
 Sys.sleep(.5)
}
Bimodal Gumbel: Theoretical E(X^2)
Description
Bimodal Gumbel: Theoretical E(X^2)
Usage
m2bgumbel(mu, sigma, delta)
Arguments
| mu | First location parameter. | 
| sigma | Scale parameter. | 
| delta | Second location parameter. | 
Value
Vector.
Examples
(EX2 <- m2bgumbel(mu = -2, sigma = 1, delta = -1))
# Comparison: Theoretical E(X^2) and empirical second moment
x <- rbgumbel(100000, mu = -2, sigma = 1, delta = -1)
mean(x^2)
abs(EX2 - mean(x))/abs(EX2) # relative error
# Variance
EX <- m1bgumbel(mu = -2, sigma = 1, delta = -1)
EX2 - EX^2
var(x)
abs(EX2 - EX^2 - var(x))/abs(EX2 - EX^2) # relative error
# grid 1
mu <- seq(-5, 5, length.out = 100)
delta <- seq(-5, 5, length.out = 100)
z <- outer(
  X <- mu,
  Y <- delta,
  FUN = function(x, y) m2bgumbel(mu = x, sigma = 1, delta = y)
)
persp(x = mu, y = delta, z = z, theta = -30, ticktype = 'detailed')
# grid 2
mu <- seq(-5, 5, length.out = 100)
delta <- seq(-5, 5, length.out = 100)
sigmas <- seq(.1, 10, length.out = 20)
for (sigma in sigmas) {
  z <- outer(
    X <- mu,
    Y <- delta,
    FUN = function(x, y) m2bgumbel(mu = x, sigma = sigma, delta = y)
  )
  persp(x = mu, y = delta, z = z, theta = -45, zlab = 'E(X^2)')
  Sys.sleep(.5)
}
Bimodal Gumbel: Maximum Likelihood Estimation
Description
Bimodal Gumbel: Maximum Likelihood Estimation
Usage
mlebgumbel(data, theta, auto = TRUE)
Arguments
| data | A numeric vector. | 
| theta | Vector. Starting parameter values for the minimization. Default: theta = c(1, 1, 1) | 
| auto | Logical. Automatic search for theta initial condition. Default: TRUE | 
Value
List.
Examples
# Let's generate some values
set.seed(123)
x <- rbgumbel(1000, mu = -2, sigma = 1, delta = -1)
# Look for these references in the figure:
hist(x, probability = TRUE)
lines(density(x), col = 'blue')
abline(v = c(-2.5, -.5), col = 'red')
text(x = c(c(-2.5, -.5)), y = c(.05, .05), c('mu\nnear here', 'delta\nnear here'))
# Time to fit!
# If argument auto = FALSE
fit <- mlebgumbel(
   data = x,
   # try some values near the region. Format: theta = c(mu, sigma, delta)
   theta = c(-3, 2, -2),
   auto = FALSE
)
print(fit)
# If argument auto = TRUE
fit <- mlebgumbel(
   data = x,
   auto = TRUE
)
print(fit)
# Kolmogorov-Smirnov Tests
mu.sigma.delta <- fit$estimate$estimate
ks.test(
  x,
  y = 'pbgumbel',
  mu = mu.sigma.delta[[1]],
  sigma = mu.sigma.delta[[2]],
  delta = mu.sigma.delta[[3]]
)
Bimodal Gumbel: Distribution Function
Description
Bimodal Gumbel: Distribution Function
Usage
pbgumbel(q, mu, sigma, delta, lower.tail = TRUE)
Arguments
| q | Quantile. | 
| mu | First location parameter. | 
| sigma | Scale parameter. | 
| delta | Second location parameter. | 
| lower.tail | Logical; if TRUE (default), probabilities are P(X <= x) otherwise, P(X > x). | 
Value
Vector.
Examples
pbgumbel(0, mu = -2, sigma = 1, delta = -1)
integrate(dbgumbel, mu = -2, sigma = 1, delta = -1, lower = -Inf, upper = 0)
pbgumbel(0, mu = -2, sigma = 1, delta = -1, lower.tail = FALSE)
curve(pbgumbel(x, mu = -2, sigma = 1, delta = -1), xlim = c(-5, 10))
Bimodal Gumbel: Quantile Function
Description
Bimodal Gumbel: Quantile Function
Usage
qbgumbel(p, mu, sigma, delta, initial = -10, final = 10)
Arguments
| p | Probability. | 
| mu | First location parameter. | 
| sigma | Scale parameter. | 
| delta | Second location parameter. | 
| initial | Starting point of range in desired quantile. | 
| final | Starting point of range in desired quantile. | 
Value
Vector.
Examples
# It is recommended to set up a pbgumbel
# graph to see the starting and ending
# range of the desired quantile.
curve(pbgumbel(x, mu = -2, sigma = 1, delta = -1), xlim = c(-5, 5))
(value <- qbgumbel(.25, mu = -2, sigma = 1, delta = -1, initial = -4, final = -2))
pbgumbel(value, mu = -2, sigma = 1, delta = -1)
Bimodal Gumbel: Pseudo-Random Numbers Generator
Description
Bimodal Gumbel: Pseudo-Random Numbers Generator
Usage
rbgumbel(n, mu, sigma, delta)
Arguments
| n | Number of observations. If length(n) > 1, the length is taken to be the number required. | 
| mu | First location parameter. | 
| sigma | Scale parameter. | 
| delta | Second location parameter. | 
Value
A matrix nx1.
Examples
x <- rbgumbel(40000, mu = -2, sigma = 1, delta = -1)
hist(x, probability = TRUE)
curve(dbgumbel(x, mu = -2, sigma = 1, delta = -1), add = TRUE, col = 'blue')
lines(density(x), col = 'red')