pypfilt.stats#

Note that there are 9 common definitions of sample quantiles. Weighted versions of these 9 definitions are presented in this article. The qtl_wt() function currently implements type 2 weighted quantiles. However, the differences between these definitions is typically small when there are many values (i.e., particles).

pypfilt.stats.cov_wt(x, wt, cor=False)#

Estimate the weighted covariance or correlation matrix.

Equivalent to cov.wt(x, wt, cor, center=TRUE, method="unbiased") as provided by the stats package for R.

Parameters:
  • x – A 2-D array; columns represent variables and rows represent observations.

  • wt – A 1-D array of observation weights.

  • cor – Whether to return a correlation matrix instead of a covariance matrix.

Returns:

The covariance matrix (if cor=False) or the correlation matrix (if cor=True).

pypfilt.stats.avg_var_wt(x, weights, biased=True)#

Return the weighted average and variance (based on a Stack Overflow answer).

Parameters:
  • x – A 1-D array of values.

  • weights – A 1-D array of normalised weights.

  • biased – Use a biased variance estimator.

Returns:

A tuple that contains the weighted average and weighted variance.

Raises:

ValueError – if x or weights are not one-dimensional, or if x and weights have different dimensions.

pypfilt.stats.qtl_wt(x, weights, probs)#

Calculate weighted quantiles of an array of values, where each value has a fractional weighting.

Weights are summed over exact ties, yielding distinct values x_1 < x_2 < … < x_N, with corresponding weights w_1, w_2, …, w_N. Let s_j denote the sum of the first j weights, and let W denote the sum of all the weights. For a probability p:

  • If p * W < s_1 the estimated quantile is x_1.

  • If s_j < p * W < s_{j + 1} the estimated quantile is x_{j + 1}.

  • If p * W == s_N the estimated quantile is x_N.

  • If p * W == s_j the estimated quantile is (x_j + x_{j + 1}) / 2.

Parameters:
  • x – A 1-D array of values.

  • weights – A 1-D array of weights.

  • probs – The quantile(s) to compute.

Returns:

The array of weighted quantiles.

Raises:

ValueError – if x or weights are not one-dimensional, or if x and weights have different dimensions.

pypfilt.stats.cred_wt(x, weights, creds)#

Calculate weighted credible intervals.

Parameters:
  • x – A 1-D array of values.

  • weights – A 1-D array of weights.

  • creds (List(int)) – The credible interval(s) to compute (0..100, where 0 represents the median and 100 the entire range).

Returns:

A dictionary that maps credible intervals to the lower and upper interval bounds.

Raises:

ValueError – if x or weights are not one-dimensional, or if x and weights have different dimensions.