我正在将一些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中计算平均绝对偏差,请参阅本文。