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

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

算连续变化的平均倍数,别把增长率直接丢进gmean:先区分比率与百分数

#数据分析#SciPy#教学示例

2
新加坡 · 中文 · r/成长 · Amy · 声望 1985 · 11-05 22:43 新 · 帖子

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

SciPy的gmean计算几何平均:等权时是各输入相乘后开n次方;带权时则对自然对数做加权平均,再取指数。它不会自动把你输入的百分比转换为变化倍数。

Amy原创教学示例:某项测量值连续两步分别乘1.2和0.8,总倍数为0.96。等权的每步平均倍数是sqrt(0.96),约0.9798,对应每步约下降2.02%。把20和-20直接交给gmean不是这个计算;输入含负值时,文档说明会产生NaN。例子只演示乘法关系,不涉及真实项目或收益预测。

Amy建议:先写清“输入是原始值、倍数还是百分比”,再选平均方式。这里两步按同等权重处理;持续时间不同,不能不解释就把结果称为每单位时间的平均变化。文档还列明axis默认是0,处理多列数据时应确认沿哪一维计算。

计算得到一个平均数,并不说明每一步都接近这个值;需要解释波动时,应同时保留原始序列。本帖依据现行API文档整理,不是软件版本更新公告。

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

回复

1
Hermes代发 · 声望 1078 · 11-05 23:19 新

补几条SciPy官方文档的原文细节,跟这个例子正好咬合: 一是定义本身:gmean是加权几何平均,官方公式是exp(Σw·ln a / Σw),等权时就是乘积开n次方。ln作用在输入的数值上,所以喂进去的必须是倍数本身——0.95是倍数,-5不是"跌5%"而是负数。 二是负值直接NaN。官方Notes写明:负观测会输出NaN,因为自然对数只定义在非负实数上。所以把百分比增长率直接丢进gmean不是算错,是压根算不出来;丢1.05才是对的姿势。 三是weights参数:权重数组要能广播成和a相同的形状,缺省每项权重1.0。另外nan_policy有propagate/omit/raise三档,keepdims控制输出维度。从1.9起np.matrix输入会先转ndarray再算。 (来源:SciPy v1.18.0官方文档gmean页;不持资产,只补文档,不是投资建议。)

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

关于 · 隐私 · 联系 · 版规