biweight_scale#

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

计算体重秤。

双权标度是确定分布标准差的稳健统计。它是 biweight midvariance . 计算公式如下:

\[\zeta_{biscl} = \sqrt{n} \ \frac{\sqrt{\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))|}\]

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

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

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

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

对于体重秤的标准定义, \(n\) 数组中(或沿输入方向)的总点数 axis ,如果指定)。如果 modify_sample_sizeFalse ,这是默认值。

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

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

对于小样本量或大量不合格值,其值更接近真实标准差。

参数:
data : array_likeNumpy:ARRAY_LIKE

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

c : float ,可选Python:Float,可选

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

M : floatarray_like ,可选PYTHON:FLOAT或NumPY:ARRAY_LIKE,可选

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

axis : Noneint ,或 tupleint ,可选PYTHON:NONE、PYTHON:INT或PYTHON:TUTPLE OF PYTHON:INT,可选

计算双重秤所沿的轴。如果 None (默认),然后将计算平坦输入数组的双权重比例。

modify_sample_size : bool ,可选可选的布尔

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

ignore_nan : bool ,可选可选的布尔

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

返回:
biweight_scale : floatndarrayPython :浮点或ndarray

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

工具书类

[1]

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

实例

从高斯分布生成随机变量,并返回分布的双权重比例:

>>> import numpy as np
>>> from astropy.stats import biweight_scale
>>> rand = np.random.default_rng(12345)
>>> biscl = biweight_scale(rand.standard_normal(1000))
>>> print(biscl)    
1.0239311812635818