加重不偏標本共分散の正しい方程式


9

私は、加重不偏サンプル共分散を計算するための正しい方程式を探しています。このテーマではインターネットソースは非常にまれであり、それらはすべて異なる方程式を使用します。

私が見つけた最もありそうな方程式はこれです:

qjk=i=1Nwi(i=1Nwi)2i=1Nwi2i=1Nwi(xijx¯j)(xikx¯k).

送信元:https : //en.wikipedia.org/wiki/Sample_mean_and_sample_covariance#Weighted_samples

もちろん、重み付けされた(バイアスされていない)サンプル平均を事前に計算する必要があります。

しかし、私は他のいくつかの式を見つけました:

qjk=1i=1Nwi)1i=1Nwi(xijx¯j)(xikx¯k).

または、標準の共分散式を使用しているが、サンプル平均の代わりに加重サンプル平均を使用しているソースコードや学術論文を見たこともあります...

誰かが私を助けて光を当てることができますか?

/ EDIT:私の重みは、データセット内のサンプルの観測値の数です。したがって、weights.sum()= n


1
どのようなウェイトを使用していますか?アプリケーションによって、重みは異なる意味を持つ可能性があり、正しい答えはそれらの意味に依存します。たとえば、頻度の省略形(観測のデータセットでの重みはデータの回の出現を反映する)またはサンプルに存在する確率の省略形(加重ランダムサンプルの場合、層別または階層的サンプル)。fff
whuber

@whuber:私の重みは、データセット内の1つのサンプルの観測値の数にすぎないため、次のようになります
。Sum

1
次に、あなたの質問を含めてここに多くの場所(それはすぐに明らかにならないかもしれないが)、に答えているstats.stackexchange.com/questions/58986/...(原理を説明する)などstats.stackexchange.com/questions/6534/ …(私がまだ維持しているのは正しくありませんが、自分で決めることができます)。
whuber

@whuber:ご協力ありがとうございます。ただし、最初のリンクは標準偏差(平方根の分散の平方根)についてであり、共分散についてではありません。2番目のリンクは明らかに(間違っています)間違っています。
2013年

3
分散と共分散の間に違いはありません。すべての共分散は分散の(線形結合)として取得できます。もちろん、分散は共分散の特定の例にすぎません。(数学者はこの関係を分極化と呼びます。)
whuber

回答:


18

1972年代の本(George R. Price、Ann。Hum。Genet。、Lond、pp485-490、Extension of covariance selection mathematics、1972)で解決策が見つかりました。

バイアスをかけた加重サンプルの共分散:

Σ=1i=1Nwii=1Nwi(xiμ)T(xiμ)

そして、ベッセル補正を適用することによって与えられる不偏加重サンプル共分散:

Σ=1i=1Nwi1i=1Nwi(xiμ)T(xiμ)

ここで、は(偏りのない)加重サンプルの平均です。μ

μ=i=1Nwixii=1Nwi

重要な注意:これは、重みが「繰り返し」タイプの重みである場合にのみ機能します。つまり、各重みは1つの観測の発生数を表し、ここで実際のサンプルサイズ(重みを考慮した実際のサンプルの総数)を表します。N i=1Nwi=NN

ウィキペディアの記事を更新しました。ここには、偏りのない重み付けされた標本分散の方程式もあります。

https://en.wikipedia.org/wiki/Weighted_arithmetic_mean#Weighted_sample_covariance

実用的なノート:私は最初の乗算列毎にあなたを助言ととで、その後行列の乗算を行う物事をラップするためにアップし、自動的に合計を実行します。例:Python Pandas / Numpyコード:x iwiX I - μ * (xiμ)(xiμ)

import pandas as pd
import numpy as np
# X is the dataset, as a Pandas' DataFrame
mean = mean = np.ma.average(X, axis=0, weights=weights) # Computing the weighted sample mean (fast, efficient and precise)
mean = pd.Series(mean, index=list(X.keys())) # Convert to a Pandas' Series (it's just aesthetic and more ergonomic, no differenc in computed values)
xm = X-mean # xm = X diff to mean
xm = xm.fillna(0) # fill NaN with 0 (because anyway a variance of 0 is just void, but at least it keeps the other covariance's values computed correctly))
sigma2 = 1./(w.sum()-1) * xm.mul(w, axis=0).T.dot(xm); # Compute the unbiased weighted sample covariance

重み付けされていないデータセットと同等の重み付けされたデータセットを使用して、いくつかの健全性チェックを行いました。正しく動作します。


@whuber:いいえ、それは正しいですが、「ウェイト」が何に割り当てられているかによって異なります。私の場合、それは観測の数(別名 "繰り返し")なので、この方程式は正しく機能します。正規化された重みを使用する場合、または重みが観測の各測定値の分散、いわゆる「信頼性」である場合、それは機能せず、wikiの他の方程式を使用する必要があります(これはできません) 「リピート」タイプのウェイトで動作します!)。
2013年

@whuber:とにかく、もっと一般化できるアプローチがあれば、私はそれについて聞いてうれしいです。私はインターネット全体とこのWebサイトをクロールしましたが、上記で投稿したものを除いて、リピートタイプの重みで機能する方程式が見つかりませんでした。
2013年

3
万能な公式はあり得ない:重みが整数頻度でない場合(たとえば、それらが1に合計されるように標準化されている場合)、合計サンプルサイズに関するすべての情報が失われており、補正係数。それでも、重みの合計が1にならない場合は、数式で答えが得られます。そのため、数式が一般的に適用できるものではなく実際の周波数であり、他のものではないことを明確にすることが重要です。n /n 1 w inn/(n1)wi
whuber

3
@whuber:説明してくれてありがとう、それは私が恐れていたものです(統一された方程式や補正係数の損失はありません)。これについて詳しく説明するために、回答にメモを追加しました。ウィキペディアの記事に、修正係数についての行も追加します。
激しい

@whuberこれらの古いスレッドにまたがりました。「普遍的な公式はあり得ない」というあなたの声明が、たとえばこのスレッドで受け入れられている答えにどのように適合するか疑問に思っています:stats.stackexchange.com/questions/47325。あなたはその答えが間違っていると思いますか(重みには公平な表現があると主張することで)?
amoeba
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.