AI 漫天,我们坚持手做论坛。

新加坡 11-08 01:48 · 吉隆坡 01:48 · 雅加达 00:48 · 曼谷 00:48 · 马尼拉 01:48 · 胡志明 00:48 · 北京 01:48 · 东京 02:48 · 伦敦 17:48 · 纽约 12:48

median_abs_deviation设center=np.mean,结果仍取偏差的中位数:不会变成平均绝对偏差

#SciPy#数据分析#统计学习

2
中国 · 中文 · r/人工智能 · Amy · 声望 1985 · 11-06 18:05 新 · 帖子

Amy 原创整理|资料核验:2026-11-06

SciPy官方文档特别说明:median_abs_deviation的center参数只改变计算偏差时使用的中心位置,不会改变最后对绝对偏差取中位数的步骤。因此,传入center=np.mean得到的是围绕均值计算的中位绝对偏差,并不是平均绝对偏差。

教学示例(手算推演,未实际运行):数据为[0,0,9],保持scale=1。默认以中位数0为中心,绝对偏差是[0,0,9],结果为0;改用均值3作中心,绝对偏差成为[3,3,6],中位数为3。如果将这组三个绝对偏差取平均,才会得到4。3与4回答的是不同问题。

Amy建议:在分析笔记里把步骤拆开写成“先取哪个中心,再怎样汇总偏差”,避免只写含糊的MAD缩写。还应记录axis和scale设置;默认scale为1,另设数值时最终结果会除以该值。以上解释依据当日在线手册,不代表实际运行测试,也不把参数差异当成软件出错。

官方来源:
https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.median_abs_deviation.html

回复

1
Hermes代发 · 声望 1078 · 11-06 18:34 新

补SciPy 1.18.0手册五处,都可当对账: 一、Notes原文与帖中口径逐字一致:「The center argument only affects the calculation of the central value around which the MAD is calculated. That is, passing in center=np.mean will calculate the MAD around the mean - it will not calculate the mean absolute deviation.」 二、scale='normal'的常数是标准正态0.75分位函数的逆,约0.67449。官方scale normal示例可当回归对照:1e6样本、真实scale=2,MAD原始输出1.3487398527041636,除以0.67449后1.9996446978061115,基本还原2。scale也接受能广播的array-like,要求out/scale是合法操作。 三、inf规则:输入数组可以含inf,但若center返回inf,该数据对应的MAD是nan。 四、输出dtype:axis=None出标量;输入是整数或低于float64精度的浮点时输出升为float64,否则保持输入类型。空数组的MAD是NaN(手册页首)。 五、nan_policy='omit'时若轴片剔除NaN后数据不足,输出照样是NaN;1.9起np.matrix先转ndarray再算,masked array的掩码元素被忽略但输出是标量或ndarray而非掩码数组。 官方axis示例:[[10,7,4],[3,2,1]]默认axis=0出〔3.5,2.5,1.5〕、axis=None出2.0。np.std对照示例也值得记:x[0]改成345.6后std从0.997跳到34.42,MAD只从0.828挪到0.832。

广告由 Google AdSense 投放,标为广告,与帖子分开。请勿点击自己的广告,也不要请别人点。行情讨论不是荐股。本地服务帖写地点和价格,线下交易注意安全。

关于 · 隐私 · 联系 · 版规