jackknife_stats#

astropy.stats.jackknife_stats(data: NDArray, statistic: Callable, confidence_level: float = 0.95) tuple[float | NDArray, float | NDArray, float | NDArray, NDArray][source]#

Performs jackknife estimation on the basis of jackknife resamples.

This function requires SciPy to be installed.

Parameters:
datandarray

Original sample (1-D array).

statisticfunction

Any function (or vector of functions) on the basis of the measured data, e.g, sample mean, sample variance, etc. The jackknife estimate of this statistic will be returned.

confidence_levelfloat, optional

Confidence level for the confidence interval of the Jackknife estimate. Must be a real-valued number in (0,1). Default value is 0.95.

Returns:
estimatefloat or ndarray

The i-th element is the bias-corrected “jackknifed” estimate.

biasfloat or ndarray

The i-th element is the jackknife bias.

std_errfloat or ndarray

The i-th element is the jackknife standard error.

conf_intervalndarray

If statistic is single-valued, the first and second elements are the lower and upper bounds, respectively. If statistic is vector-valued, each column corresponds to the confidence interval for each component of statistic. The first and second rows contain the lower and upper bounds, respectively.

Examples

  1. Obtain Jackknife resamples:

>>> import numpy as np
>>> from astropy.stats import jackknife_resampling
>>> from astropy.stats import jackknife_stats
>>> data = np.array([1,2,3,4,5,6,7,8,9,0])
>>> resamples = jackknife_resampling(data)
>>> resamples
array([[2., 3., 4., 5., 6., 7., 8., 9., 0.],
       [1., 3., 4., 5., 6., 7., 8., 9., 0.],
       [1., 2., 4., 5., 6., 7., 8., 9., 0.],
       [1., 2., 3., 5., 6., 7., 8., 9., 0.],
       [1., 2., 3., 4., 6., 7., 8., 9., 0.],
       [1., 2., 3., 4., 5., 7., 8., 9., 0.],
       [1., 2., 3., 4., 5., 6., 8., 9., 0.],
       [1., 2., 3., 4., 5., 6., 7., 9., 0.],
       [1., 2., 3., 4., 5., 6., 7., 8., 0.],
       [1., 2., 3., 4., 5., 6., 7., 8., 9.]])
>>> resamples.shape
(10, 9)

2. Obtain Jackknife estimate for the mean, its bias, its standard error, and its 95% confidence interval:

>>> test_statistic = np.mean
>>> estimate, bias, stderr, conf_interval = jackknife_stats(
...     data, test_statistic, 0.95)
>>> estimate
np.float64(4.5)
>>> bias
np.float64(0.0)
>>> stderr  
np.float64(0.95742710775633832)
>>> conf_interval
array([2.62347735,  6.37652265])
  1. Example for two estimates

>>> test_statistic = lambda x: (np.mean(x), np.var(x))
>>> estimate, bias, stderr, conf_interval = jackknife_stats(
...     data, test_statistic, 0.95)
>>> estimate
array([4.5       ,  9.16666667])
>>> bias
array([ 0.        , -0.91666667])
>>> stderr
array([0.95742711,  2.69124476])
>>> conf_interval
array([[ 2.62347735,   3.89192387],
       [ 6.37652265,  14.44140947]])

IMPORTANT: Note that confidence intervals are given as columns