You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何设置R语言scale函数的center=FALSE会改变均值?

为什么mean(scale(x, center=FALSE))得到0.9678482?

这是因为scale()函数在center=FALSE的默认缩放逻辑不是除以样本标准差,而是除以数据的均方根(Root Mean Square, RMS):

  • 当center=FALSE且scale=TRUE(默认值)时,scale(x)会把每个元素除以数据的均方根,公式为:x / sqrt(mean(x^2))
  • 因此mean(scale(x, center=FALSE))就等于mean(x) / sqrt(mean(x^2))

用代码验证一下:

set.seed(1)
x <- rnorm(30, 10, 2)

# 计算x的均方根
rms_x <- sqrt(mean(x^2))
# 计算mean(x)除以均方根
mean(x) / rms_x
# [1] 0.9678482

这个结果和mean(scale(x, center=FALSE))的输出完全一致。

如果想让缩放基于样本标准差,需要手动指定scale参数为样本标准差:

mean(scale(x, center=FALSE, scale=sd(x)))
# 结果约为 5.097,等于 mean(x)/sd(x)

内容的提问来源于stack exchange,提问作者Vallo Varik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 15:20:22