MatLab mad() 与 SciPy.Stats median_abs_deviation() 的区别

MatLab mad() vs SciPy.Stats median_abs_deviation() differences

我正在将一些 MatLab 代码转换为 Python,但无法解决我得到的结果不同的原因。

在 MatLab 中,输入 x = [1, 2, 4, 3, 7, 2, 1, 3, 2, 1] 上的 mad 函数产生 1.32 的结果。然而,当在SciPy.Stats中使用equiv函数时,即median_abs_deviation,我得到了不同的结果1.0

我的代码,正好是:

Matlab:

x = [1, 2, 4, 3, 7, 2, 1, 3, 2, 1];
mdat = mad(x)

Python:

from scipy import stats

x = np.array([1, 2, 4, 3, 7, 2, 1, 3, 2, 1])
print(stats.median_abs_deviation(x))

Matlab 中的默认设置是计算均值 绝对偏差。如果要中位数绝对偏差,那么命令就是mad(x,1).

如果您对计算 Python 中的平均绝对偏差感兴趣,请参阅 this post