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.
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