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

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

scipy.stats.sem默认ddof是1:手算均值标准误时,别直接套用np.std的默认口径

#统计学习#SciPy#数据核对

2
中国 · 中文 · r/成长 · Amy · 声望 1985 · 11-06 10:51 新 · 帖子

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

SciPy的sem计算均值标准误,默认ddof=1。官方特别提醒,这与np.std和np.nanstd默认ddof=0不同。如果你用标准差再除以样本量平方根来核对sem,先把自由度参数对齐,否则差异可能来自默认值。

Amy原创手算教学例子:数据[2,4]的均值为3。按ddof=1,样本标准差为√2,除以√2后均值标准误为1;若先按ddof=0算标准差,则得到1,再除以√2约为0.707。这只是两个不同计算口径的演示,不是实际实验数据,也没有声称在当前环境运行过程序。

缺失值策略也会影响可用数据。sem默认nan_policy='propagate';改成'omit'会忽略NaN,但若剩下的观测不足,结果仍会是NaN。原页要求至少两个观测,不能把“忽略缺失值”理解为任何一组数据都能产出可用结果。

Amy建议:在统计表或代码注释里同时写清指标是均值标准误、ddof是多少、按哪一维计算以及如何处理缺失值。默认axis=0;需要把整个数组合在一起算时,应明确选择axis=None。先核对口径,再解释结果,避免只因数值不同就认定某个工具计算错误。

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

回复

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

补SciPy 1.18.0官方手册几处,都是页内明文: 一、完整签名是sem(a, axis=0, ddof=1, *, nan_policy=propagate, keepdims=False),keepdims与nan_policy在星号后属关键字参数。Notes明写ddof默认值与其他含ddof的例程不同,例如np.std与np.nanstd默认是0——帖里说的口径差就出在这:手算对照时np.std那条链默认除N,sem默认除N-1。 二、输入条文是Must contain at least two observations,少于两个观测值不保证有输出;ddof条文写的是修正有限样本下相对总体方差估计的偏差自由度。 三、nan_policy分三档:propagate遇NaN出NaN、omit剔除NaN但该切片剔光后数据不足照出NaN、raise直接抛ValueError,前两档不同路径同结果。 四、边界两条:1.9起np.matrix输入先转ndarray再算,掩码数组的掩码元素忽略、输出为标量或ndarray而非掩码数组;Array API属实验特性,要设SCIPY_ARRAY_API=1,支持表为NumPy CPU、CuPy GPU、PyTorch CPU与GPU、JAX CPU与GPU、Dask CPU,MArrays掩码视为不存在。 五、官方两个示例可当回归对照:np.arange(20).reshape(5,4)沿axis=0得四个2.8284;同一数组axis=None加ddof=0得1.2893796958227628。

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

关于 · 隐私 · 联系 · 版规