betaCvMfit function

Robust fit of a Beta distribution using CvM distance minimization

Robust fit of a Beta distribution using CvM distance minimization

Robustly fits a Beta distribution to data using -von-Mises (CvM) distance minimization. latin1

betaCvMfit(data, CvM = TRUE, rob = TRUE)

Arguments

  • data: numeric vector: The sample, a Beta distribution is fitted to.
  • CvM: logical: If FALSE the -von-Mises-distance is not minimized, but only moment estimates for the parameters of the Beta distribution are returned (see Details).
  • rob: logical: If TRUE, mean and standard deviation are replaced by median and MAD when calculating moment estimates for the parameters of the Beta distribution (see Details).

Details

betaCvMfit fits a Beta distribution to data by minimizing the -von-Mises distance. Moment estimates of the parameters of the Beta distribution, clipped to positive values, are used as starting values for the optimization process. They are calculated using

a^=xˉ(xˉ+xˉ2+s^2)s^2,aest=mean(x)(mean(x)+mean(x)2+var(x))/var(x) \hat a=-\frac{\bar x \cdot (-\bar x + \bar x^2 + \hat s^2)}{\hat s^2},a_est = - mean(x)*(-mean(x)+mean(x)^2+var(x))/var(x) b^=a^a^xˉxˉ.best=(aestaestmean(x))/mean(x) \hat b= \frac{\hat a - \hat a \bar x}{\bar x}.b_est=(a_est-a_est*mean(x))/mean(x)

These clipped moment estimates can be returned instead of CvM-fitted parameters setting CvM = FALSE.

The -von-Mises distance is defined as (see Clarke, McKinnon and Riley 2012)

1ni=1n(F(u(i))i0.5n)2+112n2,1/n(F(u[(i)])(i0.5)/n)2+1/(12n2) \frac 1n \sum_{i=1}^n \left(F(u_{(i)}) -\frac{i-0.5}{n}\right)^2+ \frac{1}{12n^2},1/n*\sum(F(u[(i)])-(i-0.5)/n)^2+1/(12n^2)

where u[(1)],,u[(n)]u[(1)], \ldots, u[(n)] is the ordered sample and FF the distribution function of Beta(a,b)(a,b).

Returns

numeric vector: Estimates for the Parameters a,ba,b of a Beta(a,b)(a,b) distribution with mean a/(a+b)a/(a+b).

Author(s)

Anita M. Thieler, with contributions from Brenton R. Clarke.

Note

Adapted from R-Code from Brenton R. Clarke to fit a Gamma distribution (see Clarke, McKinnon and Riley 2012) using -von-Mises distance minimization. Used in Thieler et al. (2013). See also Thieler, Fried and Rathjens (2016).

See Also

See RobPer-package for an example applying betaCvMfit to detect valid periods in a periodogram.

References

Clarke, B. R., McKinnon, P. L. and Riley, G. (2012): A Fast Robust Method for Fitting Gamma Distributions. Statistical Papers, 53 (4), 1001-1014

Thieler, A. M., Backes, M., Fried, R. and Rhode, W. (2013): Periodicity Detection in Irregularly Sampled Light Curves by Robust Regression and Outlier Detection. Statistical Analysis and Data Mining, 6 (1), 73-89

Thieler, A. M., Fried, R. and Rathjens, J. (2016): RobPer: An R Package to Calculate Periodograms for Light Curves Based on Robust Regression. Journal of Statistical Software, 69 (9), 1-36, doi:10.18637/jss.v069.i09

Examples

# data: set.seed(12) PP <- c(rbeta(45, shape1=4, shape2=15), runif(5, min=0.8, max=1)) hist(PP, freq=FALSE, breaks=30, ylim=c(0,7), xlab="Periodogram bar") # true parameters: myf.true <- function(x) dbeta(x, shape1=4, shape2=15) curve(myf.true, add=TRUE, lwd=2) # method of moments: par.mom <- betaCvMfit(PP, rob=FALSE, CvM=FALSE) myf.mom <- function(x) dbeta(x, shape1=par.mom[1], shape2=par.mom[2]) curve(myf.mom, add=TRUE, lwd=2, col="red") # robust method of moments par.rob <- betaCvMfit(PP, rob=TRUE, CvM=FALSE) myf.rob <- function(x) dbeta(x, shape1=par.rob[1], shape2=par.rob[2]) curve(myf.rob, add=TRUE, lwd=2, col="blue") # CvM distance minimization par.CvM <- betaCvMfit(PP, rob=TRUE, CvM=TRUE) myf.CvM <- function(x) dbeta(x, shape1=par.CvM[1], shape2=par.CvM[2]) curve(myf.CvM, add=TRUE, lwd=2, col="green") # Searching for outliers... abline(v=qbeta((0.95)^(1/50), shape1=par.CvM[1], shape2=par.CvM[2]), col="green") legend("topright", fill=c("black", "green","blue", "red"), legend=c("true", "CvM", "robust moments", "moments")) box()
  • Maintainer: Jonathan Rathjens
  • License: GPL-3
  • Last published: 2022-06-12

Useful links