distrEx (version 2.0.2)

HellingerDist: Generic function for the computation of the Hellinger distance of two distributions

Description

Generic function for the computation of the Hellinger distance $d_h$ of two distributions $P$ and $Q$ which may be defined for an arbitrary sample space $(\Omega,{\cal A})$. The Hellinger distance is defined as $$d_h(P,Q)=\frac{1}{2}\int|\sqrt{dP}\,-\sqrt{dQ}\,|^2$$ where $\sqrt{dP}$, respectively $\sqrt{dQ}$ denotes the square root of the densities.

Usage

HellingerDist(e1, e2, ...)
## S3 method for class 'AbscontDistribution,AbscontDistribution':
HellingerDist(e1,e2)
## S3 method for class 'AbscontDistribution,DiscreteDistribution':
HellingerDist(e1,e2)
## S3 method for class 'DiscreteDistribution,AbscontDistribution':
HellingerDist(e1,e2)
## S3 method for class 'DiscreteDistribution,DiscreteDistribution':
HellingerDist(e1,e2)
## S3 method for class 'numeric,DiscreteDistribution':
HellingerDist(e1, e2)
## S3 method for class 'DiscreteDistribution,numeric':
HellingerDist(e1, e2)
## S3 method for class 'numeric,AbscontDistribution':
HellingerDist(e1, e2, asis.smooth.discretize = "discretize", 
            n.discr = getdistrExOption("nDiscretize"), low.discr = getLow(e2),
            up.discr = getUp(e2), h.smooth = getdistrExOption("hSmooth"))
## S3 method for class 'AbscontDistribution,numeric':
HellingerDist(e1, e2, asis.smooth.discretize = "discretize", 
            n.discr = getdistrExOption("nDiscretize"), low.discr = getLow(e1),
            up.discr = getUp(e1), h.smooth = getdistrExOption("hSmooth"))
## S3 method for class 'AcDcLcDistribution,AcDcLcDistribution':
HellingerDist(e1,e2)

Arguments

e1
object of class "Distribution" or class "numeric"
e2
object of class "Distribution" or class "numeric"
asis.smooth.discretize
possible methods are "asis", "smooth" and "discretize". Default is "discretize".
n.discr
if asis.smooth.discretize is equal to "discretize" one has to specify the number of lattice points used to discretize the abs. cont. distribution.
low.discr
if asis.smooth.discretize is equal to "discretize" one has to specify the lower end point of the lattice used to discretize the abs. cont. distribution.
up.discr
if asis.smooth.discretize is equal to "discretize" one has to specify the upper end point of the lattice used to discretize the abs. cont. distribution.
h.smooth
if asis.smooth.discretize is equal to "smooth" -- i.e., the empirical distribution of the provided data should be smoothed -- one has to specify this parameter.
...
further arguments to be used in particular methods (not in package distrEx)

Value

  • Hellinger distance of e1 and e2

concept

distance

Details

In case we want to compute the Hellinger distance between (empirical) data and an abs. cont. distribution, we can specify the parameter asis.smooth.discretize to avoid trivial distances (distance = 1). Using asis.smooth.discretize = "discretize", which is the default, leads to a discretization of the provided abs. cont. distribution and the distance is computed between the provided data and the discretized distribution. Using asis.smooth.discretize = "smooth" causes smoothing of the empirical distribution of the provided data. This is, the empirical data is convoluted with the normal distribution Norm(mean = 0, sd = h.smooth) which leads to an abs. cont. distribution. Afterwards the distance between the smoothed empirical distribution and the provided abs. cont. distribution is computed.

References

Huber, P.J. (1981) Robust Statistics. New York: Wiley. Rieder, H. (1994) Robust Asymptotic Statistics. New York: Springer.

See Also

distrExIntegrate, ContaminationSize, TotalVarDist, KolmogorovDist, Distribution-class

Examples

Run this code
HellingerDist(Norm(), Gumbel())
HellingerDist(Norm(), Td(10))
HellingerDist(Norm(mean = 50, sd = sqrt(25)), Binom(size = 100)) # mutually singular
HellingerDist(Pois(10), Binom(size = 20)) 

x <- rnorm(100)
HellingerDist(Norm(), x)
HellingerDist(x, Norm(), asis.smooth.discretize = "smooth")

y <- (rbinom(50, size = 20, prob = 0.5)-10)/sqrt(5)
HellingerDist(y, Norm())
HellingerDist(y, Norm(), asis.smooth.discretize = "smooth")

HellingerDist(rbinom(50, size = 20, prob = 0.5), Binom(size = 20, prob = 0.5))

Run the code above in your browser using DataCamp Workspace