Persamaan yang benar untuk kovarians sampel tidak berat tertimbang

9

Saya sedang mencari persamaan yang tepat untuk menghitung kovarians sampel yang tidak bias tertimbang. Sumber-sumber internet sangat jarang pada tema ini dan mereka semua menggunakan persamaan yang berbeda.

Persamaan yang paling mungkin saya temukan adalah persamaan ini:

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

Dari: https://en.wikipedia.org/wiki/Sample_mean_and_sample_covariance#Weighted_samples

Tentu saja, Anda harus menghitung rata-rata sampel tertimbang (tidak bias) sebelumnya.

Namun, saya telah menemukan beberapa formula lain seperti:

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

Atau saya bahkan telah melihat beberapa kode sumber dan makalah akademis hanya menggunakan rumus kovarian standar tetapi dengan mean sampel tertimbang alih-alih sampel mean ...

Adakah yang bisa membantu saya dan menjelaskan?

/ EDIT: bobot saya hanyalah jumlah pengamatan untuk sampel dalam dataset, jadi weights.sum () = n

gaborous
sumber
1
Apa jenis beban yang Anda gunakan? Bobot dapat berarti hal yang berbeda, sesuai dengan aplikasi, dan jawaban yang benar tergantung pada maknanya. Misalnya, mereka dapat menjadi singkatan untuk frekuensi (pengamatan memiliki bobot dalam dataset untuk mencerminkan kemunculannya kali dalam data) atau mereka dapat singkatan untuk probabilitas berada dalam sampel (untuk sampel acak tertimbang, seperti sampel bertingkat atau hierarkis). ff
whuber
@whuber: Bobot saya hanyalah jumlah pengamatan untuk satu sampel dalam dataset, dan dengan demikian: Jumlah (bobot) = n
gaborous
1
Kemudian pertanyaan Anda dijawab di banyak tempat di sini (walaupun itu mungkin tidak segera terlihat), termasuk stats.stackexchange.com/questions/58986/… (yang menjelaskan prinsipnya) serta stats.stackexchange.com/questions/6534/ ... (yang saya anggap tidak benar, tetapi Anda dapat memutuskannya sendiri).
whuber
@whuber: terima kasih atas bantuan Anda, tetapi tautan pertama adalah tentang standar deviasi (akar kuadrat varians) dan bukan tentang kovarians, dan yang kedua jelas-jelas salah (seperti yang Anda tunjukkan).
Gaborous
3
Tidak ada perbedaan antara varians dan kovarians: semua kovarian dapat diperoleh sebagai (kombinasi linear) dari varian dan varian, tentu saja, hanya contoh kovarian tertentu. (Matematikawan menyebut polarisasi hubungan ini .)
whuber

Jawaban:

18

Menemukan solusi dalam buku 1972 (George R. Price, Ann. Hum. Genet., Lond, pp485-490, Perpanjangan matematika pemilihan kovarians, 1972) .

Biovaskuler sampel tertimbang bias:

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

Dan kovarians sampel tertimbang yang diberikan dengan menerapkan koreksi Bessel:

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

Di mana adalah rata-rata sampel tertimbang (tidak bias):μ

μ=i=1Nwixii=1Nwi

Catatan Penting: ini hanya berfungsi jika bobotnya adalah "ulangi" -berat jenis, yang berarti bahwa setiap bobot mewakili jumlah kemunculan satu pengamatan, dan bahwa mana mewakili ukuran sampel nyata (jumlah total nyata sampel, akuntansi untuk bobot).i=1Nwi=NN

Saya telah memperbarui artikel di Wikipedia, di mana Anda juga akan menemukan persamaan untuk varians sampel tertimbang yang tidak bias:

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

Catatan praktis: Saya menyarankan Anda untuk terlebih dahulu mengalikan kolom-demi-kolom dengan dan dan kemudian melakukan perkalian matriks dengan untuk membungkus sesuatu dan secara otomatis melakukan penjumlahan. Misalnya dalam Python Pandas / kode Numpy:wi(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

Melakukan beberapa pemeriksaan kewarasan menggunakan dataset non-tertimbang dan dataset tertimbang yang setara, dan berfungsi dengan benar.

gaborous
sumber
@whuber: tidak, itu benar, tapi itu tergantung pada "bobot" Anda. Dalam kasus saya, ini adalah jumlah pengamatan (alias "berulang"), sehingga persamaan ini berfungsi dengan benar. Dalam kasus Anda dengan bobot dinormalisasi atau juga jika bobot adalah varian dari setiap pengukuran pengamatan, yang disebut "reliabilitas", maka itu tidak berfungsi dan persamaan lain pada wiki harus digunakan (yang mana btw tidak bekerja dengan "mengulangi" -type bobot!).
Gaborous
@whuber: Lagi pula jika Anda memiliki pendekatan yang lebih umum, saya akan senang mendengarnya. Saya telah menjelajahi seluruh internet dan situs web ini dan tidak menemukan persamaan yang akan bekerja untuk jenis-pengulangan berat kecuali yang saya posting di atas!
Gaborous
3
Ada tidak mungkin menjadi formula yang universal: jika bobot tidak frekuensi integral (misalnya, jika mereka telah distandarkan untuk jumlah kesatuan), maka Anda telah kehilangan semua informasi tentang total ukuran sampel , mana tidak mungkin untuk memperkirakan faktor koreksi . Namun demikian, asalkan bobot tidak sama dengan satu kesatuan, rumus Anda akan menghasilkan jawaban. Itulah mengapa sangat penting untuk memperjelas bahwa rumus Anda bukan yang berlaku umum dan bahwa harus frekuensi aktual dan bukan yang lain. nn/(n1)wi
whuber
3
@whuber: Terima kasih atas penjelasannya, itulah yang saya takuti (tidak ada persamaan dan kehilangan faktor koreksi). Saya telah menambahkan catatan pada jawaban saya untuk lebih menjelaskan hal ini. Saya juga akan menambahkan baris Anda tentang faktor koreksi pada artikel Wikipedia.
Gaborous
@whuber Datang di utas lama ini. Saya ingin tahu bagaimana pernyataan Anda bahwa "tidak mungkin ada formula universal" cocok dengan misalnya jawaban yang diterima di utas ini: stats.stackexchange.com/questions/47325 . Apakah Anda pikir jawaban itu salah (dengan menyatakan bahwa ada ekspresi yang tidak bias untuk bobot apa pun)?
amoeba