Значение параметра ddof (дельта степеней свободы) в numpy.std() python, его статистический смысл, влияние на выборку и на результат
При расчете среднеквадратичного отклонения значений с выборкой из массива данных берется только часть данных? Например у меня есть таблица с данными, где есть столбец - difference, в нем сто строк с данными. При вот такой записи - sigma = ms['difference'].std(ddof=1), система возьмет для расчета только часть данных или все сто строк?
Ответы (1 шт):
Коротко: Все данные берутся.
Подробнее: Согласно документации*: "В расчетах используется делитель N - ddof, где N представляет количество элементов". То есть, объем данных, который берётся, остается неизменным (что и логично, с чего бы по неизвестно каким критериям "выносить" часть выборки?).
Но результат от этой дельты зависеть будет.
Обычно среднеквадратичное отклонение вычисляется, как
x.sum() / N, где N = len(x)
сам x = abs(a - a.mean())**2.
Но это верно для ddof = 0. При изменении ddof изменится и делитель, например, при ddof = 1 делитель станет равен N-1.
С практической точки зрения увеличение ddof приводит к увеличению среднеквадратичного отклонения.
Например, для массива из 10 чисел от 0 до 9 стандартное отклонение изменяется так:
2.87->3.03->3.12 при увеличении ddof 0->1->1.5 соотвественно.
Это тоже логично. Так как количество степеней свободы — это количество значений в итоговом вычислении статистики, способных варьироваться, то увеличивая дельту (которая представляет собой уменьшение этих степеней свободы), мы фактически фиксируем один из параметров, сокращая "свободность" выборки и увеличивая тем самым дисперсию.