Saya memiliki array nilai riil, yang memiliki rata-rata μ o l d dan standar deviasi σ o l d . Jika elemen array x i digantikan oleh elemen lain x j , maka rata-rata baru akan menjadi
Keuntungan dari pendekatan ini adalah ia membutuhkan perhitungan yang konstan terlepas dari nilai . Apakah ada pendekatan untuk menghitung σ n e w menggunakan σ o l d seperti perhitungan μ n e w menggunakan μ o l d ?
standard-deviation
online
pengguna
sumber
sumber
Jawaban:
Sebuah bagian dalam artikel Wikipedia pada "Algoritma untuk menghitung varians" menunjukkan bagaimana untuk menghitung varians jika elemen ditambahkan ke pengamatan Anda. (Ingat bahwa standar deviasi adalah akar kuadrat dari varians.) Asumsikan bahwa Anda menambahkan ke array Anda, makaxn+1
EDIT : Formula di atas sepertinya salah, lihat komentar.
Sekarang, mengganti elemen berarti menambahkan observasi dan menghapus yang lain; keduanya dapat dihitung dengan rumus di atas. Namun, perlu diingat bahwa masalah stabilitas numerik dapat terjadi; artikel yang dikutip juga mengusulkan varian yang stabil secara numerik.
Untuk mendapatkan formula sendiri, hitung menggunakan definisi varians sampel dan gantikan μ n e w dengan formula yang Anda berikan saat yang tepat. Ini memberi Anda σ 2 n e w - σ 2 o l d pada akhirnya, dan dengan demikian formula untuk σ n e w diberikan σ o l d dan(n−1)(σ2new−σ2old) μnew σ2new−σ2old σnew σold μold . Dalam notasi saya, saya menganggap Anda mengganti elemen xn dengan :x′n
Thexk in the sum transform into something dependent of μold , but you'll have to work the equation a little bit more to derive a neat result. This should give you the general idea.
sumber
Based on what i think i'm reading on the linked Wikipedia article you can maintain a "running" standard deviation:
Although in the article they don't maintain a separate running
sum
andcount
, but instead have the singlemean
. Since in thing i'm doing today i keep acount
(for statistical purposes), it is more useful to calculate the means each time.sumber
Given originalx¯ , s , and n , as well as the change of a given element xn to x′n , I believe your new standard deviation s′ will be the square root of
Maybe there is a snazzier way of writing it?
I checked this against a small test case and it seemed to work.
sumber