The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.

gkwdist implements the Generalized Kumaraswamy
(GKw) distribution and its seven nested sub-models for bounded
continuous data on \((0,1)\) —
proportions, rates, shares, indices. It provides density, distribution,
quantile and random generation functions, and
analytical log-likelihood, score and Hessian functions,
all written in C++ via RcppArmadillo.
ll*, gr* and hs* drop
straight into stats::optim — one pass over the data,
substantially faster than numerical (Richardson) differentiation.gkwdist cheat sheet (PDF) · view in the browser
Two pages covering the whole package: the nesting tree, all 49
functions in one matrix, the
d/p/q/r contract, a
gallery of the shapes the family reaches, the maximum-likelihood recipe,
the per-family par ordering, and the nested-model map with
likelihood-ratio degrees of freedom.
# From CRAN
install.packages("gkwdist")
# Development version
# install.packages("devtools")
devtools::install_github("evandeilton/gkwdist")Every model below is GKw with parameters held fixed. Follow an edge to fix a parameter and drop to a simpler model.
GKw(α, β, γ, δ, λ)
│
┌─────────────────────────┼─────────────────────────┐
│ │ │
λ = 1 α = β = 1 γ = 1
│ │ │
BKw(α, β, γ, δ) MC(γ, δ, λ) KKw(α, β, δ, λ)
│ │ │
α = β = 1 λ = 1 δ = 0
│ │ │
Beta(γ, δ) Beta(γ, δ) EKw(α, β, λ)
│
λ = 1
│
Kw(α, β)
Note: The Beta distribution is obtained from MC by setting \(\lambda = 1\), or from GKw by setting \(\alpha = \beta = \lambda = 1\). The Kumaraswamy distribution is obtained from EKw by setting \(\lambda = 1\), or from GKw by setting \(\gamma = 1\), \(\delta = 0\), \(\lambda = 1\).
| Distribution | Code | Parameters | Functions |
|---|---|---|---|
| Generalized Kumaraswamy | gkw |
\(\alpha, \beta, \gamma, \delta, \lambda\) | dgkw, pgkw,
qgkw, rgkw, llgkw,
grgkw, hsgkw |
| Beta-Kumaraswamy | bkw |
\(\alpha, \beta, \gamma, \delta\) | dbkw, pbkw,
qbkw, rbkw, llbkw,
grbkw, hsbkw |
| Kumaraswamy-Kumaraswamy | kkw |
\(\alpha, \beta, \delta, \lambda\) | dkkw, pkkw,
qkkw, rkkw, llkkw,
grkkw, hskkw |
| Exponentiated Kumaraswamy | ekw |
\(\alpha, \beta, \lambda\) | dekw, pekw,
qekw, rekw, llekw,
grekw, hsekw |
| McDonald (Beta Power) | mc |
\(\gamma, \delta, \lambda\) | dmc, pmc,
qmc, rmc, llmc,
grmc, hsmc |
| Kumaraswamy | kw |
\(\alpha, \beta\) | dkw, pkw,
qkw, rkw, llkw,
grkw, hskw |
| Beta | beta_ |
\(\gamma, \delta\) | dbeta_, pbeta_,
qbeta_, rbeta_, llbeta,
grbeta, hsbeta |
| Uniform | — | (none) | (none — degenerate case) |
Note: Uniform is the degenerate 0-parameter case
\(\alpha = \beta = \gamma = \lambda =
1\), \(\delta = 0\). It has no
dedicated functions in this package; use base R’s dunif,
punif, qunif, runif, or call the
GKw functions directly, e.g. dgkw(x, 1, 1, 1, 0, 1).
d*, p*, q* and r*
follow the base R convention. ll*, gr* and
hs* take (par, data) and return the
negative log-likelihood, score and Hessian, so they
minimise directly under optim() and hs*() at
the estimate is the observed information.
Note the one irregular name: the Beta
d/p/q/r keep a
trailing underscore so they do not mask stats::dbeta, but
the likelihood trio does not — llbeta, not
llbeta_.
library(gkwdist)
x <- seq(0.01, 0.99, length.out = 100)
dgkw(x, alpha = 2, beta = 3, gamma = 1.5, delta = 2, lambda = 1.2) # density
pgkw(x, 2, 3, 1.5, 2, 1.2) # CDF
qgkw(c(0.25, 0.5, 0.75), 2, 3, 1.5, 2, 1.2) # quantiles
set.seed(123)
sample <- rgkw(1000, 2, 3, 1.5, 2, 1.2) # simulateMaximum likelihood, with the analytical gradient and the observed information:
set.seed(2024)
data <- rkw(2000, alpha = 2.5, beta = 3.5)
fit <- optim(
par = gkwgetstartvalues(data, family = "kw"),
fn = llkw, # negative log-likelihood
gr = grkw, # negative score
data = data,
method = "BFGS",
hessian = TRUE
)
est <- fit$par
se <- sqrt(diag(solve(fit$hessian)))
cbind(Estimate = est, Lower = est - 1.96 * se, Upper = est + 1.96 * se)gkwgetstartvalues() returns a named vector already in
the order that family’s ll* expects — which differs between
families, and is worth checking on the cheat sheet before writing
par by hand.
vignette("gkwdist") — a worked introduction: fitting,
model selection, profile likelihood, confidence regions,
diagnostics.vignette("theory-gkwdist") — the densities, CDFs and
quantiles of all seven sub-families with proofs, the score and observed
information in closed form, and the identifiability and boundary
conditions behind the asymptotics.Carrasco, J. M. F., Ferrari, S. L. P., & Cordeiro, G. M. (2010). A new generalized Kumaraswamy distribution. arXiv:1004.0911. arxiv.org/abs/1004.0911
Cordeiro, G. M., & de Castro, M. (2011). A new family of generalized distributions. Journal of Statistical Computation and Simulation, 81(7), 883-898. doi:10.1080/00949650903530745
Kumaraswamy, P. (1980). A generalized probability density function for double-bounded random processes. Journal of Hydrology, 46(1-2), 79-88. doi:10.1016/0022-1694(80)90036-0
Jones, M. C. (2009). Kumaraswamy’s distribution: A beta-type distribution with some tractability advantages. Statistical Methodology, 6(1), 70-81. doi:10.1016/j.stamet.2008.04.001
Nadarajah, S., Cordeiro, G. M., & Ortega, E. M. (2012). The exponentiated Kumaraswamy distribution. Journal of the Franklin Institute, 349(3), 1180-1214.
McDonald, J. B. (1984). Some generalized functions for the size distribution of income. Econometrica, 52(3), 647-663. doi:10.2307/1913469
Cordeiro, G. M., & Brito, R. S. (2012). The beta power distribution. Brazilian Journal of Probability and Statistics, 26(1), 88-112. doi:10.1214/10-BJPS124
citation("gkwdist")José Evandeilton Lopes LEG - Laboratory of Statistics and Geoinformation PPGMNE - Graduate Program in Numerical Methods in Engineering Federal University of Paraná (UFPR), Brazil Email: evandeilton@gmail.com
MIT License. See LICENSE file for details.
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.