2015-12-02 13 views
11

Oto mój kod:Odchylenie standardowe w numpy

import numpy as np 
print(np.std(np.array([0,1]))) 

produkuje 0.5

Jestem przekonany, że jest to błędne. Co ja robię źle?

+1

To się zgadza. 'std = RMS (dane - średnie)'. W tym przypadku: 'std = sqrt ((0,5^2 + 0,5^2)/2) = sqrt (0,25) = 0,5' –

+0

@MadPhysicist, dziękuję, po prostu trochę mylić ze std próbki i populacji. Arkusz kalkulacyjny Google używa przykładowego standardowego odchylenia pod adresem stdev. – user1700890

+0

Ustaw opcjonalny parametr 'ddof' na' 1', aby uzyskać std popd: http://docs.scipy.org/doc/numpy/reference/generated/numpy.std.html –

Odpowiedz

18

Domyślnie numpy.std zwraca odchylenie standardowe populacji, w którym to przypadku np.std([0,1]) jest prawidłowo zgłaszane jako 0.5. Jeśli szukasz odchylenie standardowe próbki, można podać parametr opcjonalny ddof do std():

>>> np.std([0, 1], ddof=1) 
0.70710678118654757 

ddof modyfikuje dzielnik sumy kwadratów próbek minus wartość średnią. Dzielnik to N - ddof, gdzie domyślny ddof jest 0, jak widać na podstawie wyniku.

+0

Myślę, że domyślną wartością numpy jest odchylenie standardowe "populacja", którym jest N, a standardowe odchylenie standardowe to N-1. – user1700890

+0

Przyznaję, że moja terminologia może być odwrotna. –

+0

Naprawiono. Dziękuję za poprawienie mnie. –