2014-12-22 28 views

cevap

114

NumPy işlevi np.std, ddof isteğe bağlı bir parametre alır: "Delta Serbestlik Dereceleri". Varsayılan olarak, bu 0. MATLAB sonucu almak için 1 olarak ayarlayın: Biz genellikle değerlerin sayısına bölün

>>> np.std([1,3,4,6], ddof=1) 
2.0816659994661326 

(standart sapma kare kökü olduğu) varyans hesaplanmasında, biraz daha içerik eklemek için biz var.

N öğesinin rastgele bir örneğini daha büyük bir dağıtımdan seçer ve varyansı hesaplarsak, bölüm N ile gerçek varyansın düşük tahmin edilmesine yol açabilir. Bunu düzeltmek için, (the degrees of freedom) tarafından bölüştüğümüz sayıyı N'dan (genellikle N-1) daha düşük bir sayıya indirebiliriz. ddof parametresi, bölümleyiciyi belirttiğimiz miktarla değiştirmemize olanak tanır. Aksi anlattı sürece

, NumPy (N bölerek, ddof=0) varyans için önyargılı tahmin edicisi hesaplar. Bu, tüm dağıtımla çalışıyorsanız (ve daha büyük bir dağıtımdan rastgele seçilen değerlerin alt kümesini değil) istediğiniz şeydir. ddof parametresi verilirse, NumPy bunun yerine N - ddof'u böler.

MATLAB'ın std varsayılan davranışı, N-1 tarafından bölerek örnek varyansın sapmasını düzeltmektir. Bu, standart sapmada bazı yanlılıkların (muhtemelen hepsinin değil) bir kısmından kurtulur. Bu işlevi, daha büyük bir dağıtımın rasgele bir örneğinde kullanıyorsanız, istediğiniz gibi olması muhtemeldir.

@hbaderts tarafından verilen güzel cevap daha fazla matematiksel ayrıntı verir.

+3

Bunu Matlab'a ekleyeceğim, 'std ([1 3 4 6], 1)', NumPy'nin varsayılan 'np.std ([1,3,4,6])' dır. Tüm bunlar Matlab ve NumPy belgelerinde açık bir şekilde açıklanmıştır, bu yüzden OP'nin gelecekte bunları okuyacağından emin olmanızı şiddetle tavsiye ederim. – horchler

51

Standart sapma, varyansın kareköküdür. varyans için bir tahmin edici nedenle sample mean örnek ortalaması anlamına gelir

biased estimator

olur

definition of variance

olarak rastgele değişken X varyansı tanımlanır.rastgele xi seçilmiş için, bu tahmincisi gerçek varyans yakınsama olmadığı gösterilebilir, ancak

unbiased estimator

rastgele seçme örnekler ve örnek tahmin kastediyorsan ve farklılıklar olması nedeniyle, bir kullanmak zorunda olacak sigma squared yakınsayacaktır düzeltilmiş (tarafsız) tahmincisi

unbiased estimator

. Düzeltme terimi n-1 aynı zamanda Bessel'in düzeltmesi olarak da adlandırılır. Varsayılan olarak Şimdi

, MATLABların std düzeltme teriminin n-1 ile tarafsız tahmin edicisi hesaplar. Bununla birlikte, NumPy (@ajcr tarafından açıklandığı gibi), varsayılan olarak bir düzeltme süresi olmadan öngerilimli tahmincisini hesaplar. ddof parametresi, herhangi bir düzeltme terimi n-ddof ayarlanmasına izin verir. 1'e ayarlayarak MATLAB'da olduğu gibi aynı sonucu elde edersiniz.

Benzer şekilde MATLAB, "tartı şemasını" belirten ikinci bir parametre olan w eklemesine izin verir. w=0, n-1 (yansız tahmin edici) düzeltme terimiyle sonuçlanırken w=1 için yalnızca n düzeltme terimi olarak kullanılır (öngerilimci tahminci). istatistikleri ile harika olmayan insanlar için

+2

Düzeltilmiş tahmin edicinin formülünde, * n * (toplamda) faktörü mevcut olmamalıdır. – Frunobulax

+2

Varyansta n-1 teriminin arkasındaki sezgi: Eğer varyansı tahmin etmek için kullanacağınız ortalamaları tahmin etmek için örneklerinizi zaten kullandınız. Bu bir korelasyon ortaya çıkarır ve böylece ddof 1 olmalıdır. – Matthias

+0

@Frunobulax Yazım hatası için yazım hatası düzeltdim. Orijinal denklemde ne olduğu, toplamın üst sınırının düzgün bir şekilde işlenmemesiydi. Toplama gösteriminin üst kısmına gitmek yerine, toplamın içine girdi. – rayryeng

1

, bir basit bir kılavuzdur: Eğer tam veri kümesi alınan bir numune için np.std() hesaplama eğer

  • ddof=1 ekleyin. Eğer DDOF sayıda oluşabilir önyargı dengelemek amacıyla numuneler için dahildir tam nüfus

için np.std() hesaplama eğer

  • ddof=0 olun.