2015-12-02 3 views
11

Вот мой код:Стандартное отклонение в Numpy

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

производит 0.5

Я уверен, что это неправильно. Что я делаю не так?

+1

Это правильно. 'std = RMS (среднее значение)'. В этом случае: 'std = sqrt ((0,5^2 + 0,5^2)/2) = sqrt (0,25) = 0,5' –

+0

@MadPhysicist, спасибо, я просто немного смутился с образцом и популяцией std. В таблице Google используется стандартное отклонение образца по стандарту stdev. – user1700890

+0

Установите дополнительный параметр 'ddof' в' 1', чтобы получить информацию о численности населения: http://docs.scipy.org/doc/numpy/reference/generated/numpy.std.html –

ответ

18

По умолчанию numpy.std возвращает стандартное отклонение населения, и в этом случае np.std([0,1]) правильно сообщается как 0.5. Если вы ищете стандартное отклонение выборки, вы можете поставить дополнительный ddof параметр для std():

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

ddof изменяет делитель суммы квадратов образцов-минус-среднего. Делитель равен N - ddof, где по умолчанию ddof равен 0, как вы можете видеть из вашего результата.

+0

Я думаю, что по умолчанию numpy является стандартным отклонением «население», которое равно N, а стандартное отклонение выборки - N-1. – user1700890

+0

Я признаю, что моя терминология может быть обратной. –

+0

Исправлено. Спасибо за исправление. –

Смежные вопросы