Fitting parameters of a hypergeometric distribution from three or more quantiles
get.hyper.par returns the parameters of a hypergeometric distribution where
pth percentiles match with the quantiles
numeric, single value or vector of probabilities.
numeric, single value or vector of quantiles corresponding to p.
numeric, single positive value giving the absolute convergence tolerance for reaching zero (default value is
numerical vector of the same length as a probabilities vector
numerical vector of the length 2 containing values (from the open interval (0, 1))
for scaling quantile-axis (relevant only if
further arguments passed to the functions
The number of probabilities, the number of quantiles and the number of weightings
must be identical and should be at least three. Using the default
three corresponding quantiles are the 2.5th percentile, the median and the 97.5th
get.hyper.par uses the R function
with the method
show.output = TRUE the output of the function
optim will be shown.
convergence equal to 0 means the successful completion of the
optimization procedure, otherwise it indicates a convergence error. The item
value displays the achieved minimal value of the functions that were minimized.
The estimated distribution parameters returned by the function
accepted if the achieved value of the minimized function (output component
optim) is smaller than the argument
The items of the probability vector
p should lie between 0 and 1.
The items of the weighting vector
fit.weights should be positive values.
The function which will be minimized is defined as a sum of squared differences between the given probabilities and the theoretical probabilities of the specified distribution evaluated at the given quantile points (least squares estimation).
Returns fitted parameters of a hypergeometric distribution or missing
NA's) if the distribution cannot fit the specified quantiles.
It should be noted that there might be deviations between the estimated
and the theoretical distribution parameters in certain circumstances. This is
because the estimation of the parameters is based on a numerical optimization
method and depends strongly on the initial values. In addition, one must always
keep in mind that a distribution for different combinations of parameters may
look very similar. Therefore, the optimization method cannot always find the
"right" distribution, but a "similar" one.
If the function terminates with the error massage "convergence error occurred or specified tolerance not achieved", one may try to set the convergence tolerance to a higher value. It is yet to be noted, that good till very good fits of parameters could only be obtained for tolerance values that are smaller than 0.001.
Matthias Greiner email@example.com (BfR),
Katharina Schueller firstname.lastname@example.org (STAT-UP Statistical Consulting),
Natalia Belgorodski email@example.com (STAT-UP Statistical Consulting)
phyper for distribution implementation details.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
q <- stats::qhyper(p = c(0.025, 0.5, 0.975), m = 5, n = 3, k = 3) old.par <- graphics::par(mfrow = c(2, 3)) get.hyper.par(q = q) get.hyper.par(q = q, tol = 1) get.hyper.par(q = q, fit.weights = c(100, 1, 100)) get.hyper.par(q = q, fit.weights = c(10, 1, 10)) get.hyper.par(q = q, fit.weights = c(1, 100, 1)) get.hyper.par(q = q, fit.weights = c(1, 10, 1)) graphics::par(old.par) q <- stats::qhyper(p = c(0.025, 0.5, 0.975), m = 10, n = 5, k = 4) old.par <- graphics::par(mfrow = c(2, 3)) get.hyper.par(q = q) get.hyper.par(q = q, fit.weights = c(100, 1, 100)) get.hyper.par(q = q, fit.weights = c(10, 1, 10)) get.hyper.par(q = q, fit.weights = c(1, 100, 1)) get.hyper.par(q = q, fit.weights = c(1, 10, 1)) graphics::par(old.par)
Want to suggest features or report bugs for rdrr.io? Use the GitHub issue tracker.