biweight_midvariance

astropy.stats.biweight_midvariance(data, c=9.0, M=None, axis=None, modify_sample_size=False, *, ignore_nan=False)[源代码]

计算双权中方差。

双权中方差是确定分布方差的一种稳健统计量。它的平方根是一个稳健的尺度估计量(即标准差)。计算公式如下:

\[\begin{split}\zeta_{Bivar}=n\\frac{\sum_{ |u_i| <1}\ (X_I-M)^2(1-u_i^2)^4}{(\SUM_{ |u_i| <1}\ (1-u_i^2)(1-5u_i^2)^2}\end{split}\]

在哪里? \(x\) 是输入数据, \(M\) 是样本中值(或输入位置)和 \(u_i\) 计算公式:

\[u{i}=\frac{(x}i-M)}{c*MAD}\]

在哪里? \(c\) 调谐是否恒定且 \(MAD\)median absolute deviation . 双权中方差调谐常数 c 通常为9.0(默认值)。

如果 \(MAD\) 为零,则返回零。

对于 biweight midvariance\(n\) 数组中(或沿输入方向)的总点数 axis ,如果指定)。如果 modify_sample_sizeFalse ,这是默认值。

然而,如果 modify_sample_size = True 然后 \(n\) 是指 \(|u_i| < 1\) 不合格的数量,即。

\[n=总和_{ |u_i| <1}\1\]

对于小样本量或大量的拒绝值,其结果是一个更接近真实方差的值。

参数
data类似阵列的

可以转换为数组的输入数组或对象。 data 可以是 MaskedArray .

c可选浮动

双权重估计器的调整常数(默认值=9.0)。

M浮点或类似数组,可选

位置估计。如果 M 是标量值,则其值将用于整个数组(或沿每个数组使用 axis ,如果指定)。如果 M 是一个数组,那么它必须是一个数组,其中包含每个数组的位置估计值 axis 输入数组的。如果 None (默认),则将使用输入数组的中值(或沿每个数组) axis ,如果指定)。

axis无、int或int的元组,可选

计算双权中间方差的一个或多个轴。如果 None (默认),然后计算平坦输入数组的双权中方差。

modify_sample_size可选的布尔

如果 False (默认),则使用的样本大小是数组中(或沿输入方向)的元素总数 axis ,如果指定),则遵循双重中方差的标准定义。如果 True ,然后减少样本量以校正任何拒绝值(即所使用的样本量仅包括非拒绝值),这会导致小样本量或大量拒绝值的值更接近真实方差。

ignore_nan可选的布尔

是否忽略输入中的NaN值 data .

返回
biweight_midvariance :浮动或 ndarray浮动或

输入数据的双权中方差。如果 axisNone 然后返回一个标量,否则 ndarray 将被退回。

工具书类

1

https://en.wikipedia.org/wiki/Robust_度量_尺度#biweight_middvariance

2

比尔斯、弗林和格哈特(1990;AJ 100、32)(https://ui.adsabs.harvard.edu/abs/1990AJ….100…32B)

实例

从高斯分布生成随机变量,并返回分布的双权中方差:

>>> import numpy as np
>>> from astropy.stats import biweight_midvariance
>>> rand = np.random.default_rng(12345)
>>> bivar = biweight_midvariance(rand.standard_normal(1000))
>>> print(bivar)    
1.0484350639638342