biweight_midcovariance

astropy.stats.biweight_midcovariance(data, c=9.0, M=None, modify_sample_size=False)[ソース]

多変量対間の二重重みにおける共分散を計算する.

双権中の共分散は2つの変数間の共分散のロバスト性と抵抗推定である。

この関数は、入力データ中のすべての入力変数(行)対間の二重重みにおける共分散を計算する。出力配列の形状は(N_Variables,N_Variables)である.対角線要素は各入力変数の二重重み中国分散となる(参照 biweight_midvariance() )である。非対角線要素は、各対の入力変数間の二重重みにおける共分散である。

For example, if the input array data contains three variables (rows) x, y, and z, the output ndarray midcovariance matrix will be:

\[\begin{split}\BEGIN{pMatrix} \zeta_{xx}&\zeta_{xy}&\zeta_{xz}\\ \zeta_{yx}&\zeta_{yy}&\zeta_{yz}\\ \zeta_{zx}&\zeta_{zy}&\zeta_{zz} \end{pMatrix}\end{split}\]

where \(\zeta_{xx}\), \(\zeta_{yy}\), and \(\zeta_{zz}\) are the biweight midvariances of each variable. The biweight midcovariance between \(x\) and \(y\) is \(\zeta_{xy}\) (\(= \zeta_{yx}\)). The biweight midcovariance between \(x\) and \(z\) is \(\zeta_{xz}\) (\(= \zeta_{zx}\)). The biweight midcovariance between \(y\) and \(z\) is \(\zeta_{yz}\) (\(= \zeta_{zy}\)).

2つの変数間のダブル重みにおける共分散 \(x\) そして \(y\) 以下の者が提供します。

\[\zeta_{xy} = n_{xy} \ \frac{\sum_{|u_i| < 1, \ |v_i| < 1} \ (x_i - M_x) (1 - u_i^2)^2 (y_i - M_y) (1 - v_i^2)^2} {(\sum_{|u_i| < 1} \ (1 - u_i^2) (1 - 5u_i^2)) (\sum_{|v_i| < 1} \ (1 - v_i^2) (1 - 5v_i^2))}\]

どこだ? \(M_x\) そして \(M_y\) 2つの変数の中央値(または入力位置)です \(u_i\) そして \(v_i\) 以下の者によって提供される:

\[ \begin{align}\begin{aligned}U_{i}=\frac{(x_i−M_x)}{c*mad_x}\\V_{i}=\frac{(y_i−M_y)}{c*mad_y}\end{aligned}\end{align} \]

どこだ? \(c\) 二重物同調定数ですか? \(MAD_x\) そして \(MAD_y\) はい。 median absolute deviation\(x\) そして \(y\) 変数です。双権中国分散同調定数 c 通常は9.0(デフォルト値)です。

もし \(MAD_x\) あるいは…。 \(MAD_y\) ゼロであれば、要素はゼロに戻る。

双権における共分散の基準定義は \(n_{{xy}}\) 変数ごとの観測総数である.以下の場合にはこの定義を用いる. modify_sample_size はい。 False これはデフォルト設定です。

しかしもし modify_sample_size = True そして、そして \(n_{{xy}}\) それに対する観察値の数です \(|u_i| < 1\) および/または \(|v_i| < 1\) つまり、そうです。

\[n_{xx} = \sum_{|u_i| < 1} \ 1\]
\[n_{xy} = n_{yx} = \sum_{|u_i| < 1, \ |v_i| < 1} \ 1\]
\[n_{yy} = \sum_{|v_i| < 1} \ 1\]

これは、小さいサンプルサイズまたは大量の拒否値に対する値の方が真の分散に近いことをもたらす。

パラメータ
data2次元または1次元アレイ

入力データは、2次元配列であってもよいし、1次元配列であってもよい。2次元配列の場合、形状(N_Variables,N_Observations)を有するべきである。単一変数の観測には、1次元アレイを入力することができ、この場合、双権中国分散(共分散なし)が計算される。各行. data 1つの変数を表し,各列はこれらのすべての変数の単一の観測値である(と numpy.cov 条約)。

c浮動、オプション

デュアル重み推定器の定数(デフォルト値=9.0)を調整する。

M浮動小数点または1次元アレイ、オプション

各変数の位置推定値は,スカラー形式であってもよいし,配列形式であってもよい.もし…。 M 配列である場合、行毎の位置推定を含む1次元配列でなければならない(すなわち、 a.ndim 元素)。もし…。 M スカラー値であれば,その値は各変数(行)に用いられる.もし…。 None (デフォルト)は,各変数(行)の中央値を使用する.

modify_sample_sizeブル値、オプション

もし False (デフォルト)、使用されるサンプルサイズは、ダブル重みにおける共分散の基準に従って定義される各変数の観測総数である。もし…。 True その後、任意の拒否値を補正するためにサンプルサイズを減少させ(上式を参照)、これは、小さいサンプルサイズまたは大量の拒否値の値をより真の共分散に近づけることをもたらす。

返品
biweight_midcovarianceNdarray

入力配列中の変数(行)ごとの二重重みにおける共分散を表す二次元配列を表す.出力配列の形状は(N_Variables,N_Variables)である.対角線要素は入力変数ごとの双重み中国分散となる.非対角線要素は、各対の入力変数間の二重重みにおける共分散である。

参考文献

1

https://www.itl.nist.gov/div898/software/dataplot/refman2/auxillar/biwmidc.htm

実例.

2つの乱数間の二重重みにおける共分散を計算する:

>>> import numpy as np
>>> from astropy.stats import biweight_midcovariance
>>> # Generate two random variables x and y
>>> rng = np.random.default_rng(1)
>>> x = rng.normal(0, 1, 200)
>>> y = rng.normal(0, 3, 200)
>>> # Introduce an obvious outlier
>>> x[0] = 30.0
>>> # Calculate the biweight midcovariances between x and y
>>> bicov = biweight_midcovariance([x, y])
>>> print(bicov)  
[[0.83435568 0.02379316]
 [0.02379316 7.15665769]]
>>> # Print standard deviation estimates
>>> print(np.sqrt(bicov.diagonal()))  
[0.91343072 2.67519302]