Результаты MAD отличаются pandas, scipy и numpy - PullRequest
2 голосов
/ 06 февраля 2020

Я хочу вычислить MAD (среднее абсолютное отклонение) , которое определяется как

MAD = median(|x_i - mean(x)|)

для списка чисел x

x = list(range(0, 10)) + [1000]

Однако результаты существенно различаются при использовании numpy, pandas и ручной реализации:

from scipy import stats
import pandas as pd
import numpy as np

print(stats.median_absolute_deviation(x, scale=1)) # prints 3.0

print(pd.Series(x).mad()) # prints 164.54

print(np.median(np.absolute(x - np.mean(x)))) # prints 91.0

Что не так?

1 Ответ

2 голосов
/ 06 февраля 2020

Среднее абсолютное отклонение определяется как:

median(|x_i - median(x)|

Метод mad в Pandas вместо этого возвращает среднее абсолютное отклонение.

Тест:

x = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1000]

stats.median_absolute_deviation(x, scale=1)
# 3.0

np.median(np.absolute(x - np.median(x)))
# 3.0

x = pd.Series(x)
(x - x.median()).abs().median()
# 3.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...