我想计算 MAD (median absolute deviation)由
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
怎么了?
最佳答案
中值绝对偏差定义为:
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
关于python - Pandas、scipy 和 numpy 的 MAD 结果不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60092641/