NumPy işlevi np.std
isteğe bağlı bir parametre alır ddof
: "Delta Serbestlik Derecesi". Varsayılan olarak bu 0
. 1
MATLAB sonucunu elde etmek için ayarlayın :
>>> np.std([1,3,4,6], ddof=1)
2.0816659994661326
Biraz daha bağlam eklemek için, varyans hesaplamasında (standart sapması kareköktür) tipik olarak sahip olduğumuz değerlerin sayısına böleriz.
Ancak, N
daha geniş bir dağılımdan rastgele bir eleman örneği seçip varyansı hesaplarsak, bölme N
, gerçek varyansın olduğundan az tahmin edilmesine yol açabilir. Bunu düzeltmek için, böldüğümüz sayıyı ( serbestlik derecesini ) N
(genellikle N-1
) den daha küçük bir sayıya indirebiliriz . ddof
Parametresi bize belirttiğiniz miktar böleni değiştirmek verir.
Aksi belirtilmedikçe, NumPy varyans için yanlı tahmin ediciyi hesaplayacaktır ( ddof=0
bölerek N
). Tüm dağıtımla çalışıyorsanız (ve daha büyük bir dağıtımdan rastgele seçilmiş bir değer alt kümesi değil), istediğiniz şey budur. Eğer ddof
parametre verilir, NumPy böler N - ddof
yerine.
MATLAB'ın varsayılan davranışı, std
örneklem varyansı için önyargıyı bölerek düzeltmektir N-1
. Bu, standart sapmadaki önyargının bir kısmından (ancak muhtemelen hepsinden değil) kurtulur. Bu işlevi, daha büyük bir dağılımın rastgele bir örneğinde kullanıyorsanız, büyük olasılıkla istediğiniz şey olacaktır.
@Hbaderts'ın güzel cevabı daha fazla matematiksel ayrıntı verir.
std([1 3 4 6],1)
NumPy'nin varsayılanına eşdeğerdirnp.std([1,3,4,6])
. Tüm bunlar Matlab ve NumPy belgelerinde oldukça açık bir şekilde açıklanmıştır, bu nedenle OP'nin gelecekte bunları okuduğundan emin olmasını şiddetle tavsiye ederim.