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

如何调整变量缩放使其中位数为0、最值落在[-1,1]区间以制作对齐箱线图

完全适配需求的缩放操作

可以通过两步顺序固定的独立变换实现,既保证所有变量中位数对齐0刻度,又满足取值全部落在[-1,1]区间、不强制卡到区间边界的要求。

操作步骤(每个变量独立处理)

顺序不能颠倒,否则会破坏对齐效果或者超出范围约束:

  • 第一步:中位数中心化。提取单个变量的所有观测值,减去该变量自身的中位数。处理完成后,该变量的中位数会严格等于0。
  • 第二步:等比例缩放控范围。计算中心化后,该变量所有值的最大绝对距离(即max(|中心化后所有观测值|)),将整个变量的所有值除以这个最大绝对距离。

效果验证

以原始观测序列[1,2,3,4,10]为例走一遍流程:

  1. 计算该序列的中位数为3,中心化后得到序列[-2, -1, 0, 1, 7],此时中位数为0
  2. 计算中心化后序列的最大绝对值为7,所有值除以7后得到最终序列[-0.29, -0.14, 0, 0.14, 1]
    对照需求逐一核对:
  • 最终序列的中位数为0,画到箱线图上时中位线会完全对齐0刻度
  • 最终取值范围为[-0.29, 1],所有值都落在[-1,1]区间内,没有超出
  • 没有像传统min-max归一化那样把最小值强制拉到-1、最大值拉到1,区间和刻度边界留有自然空隙,符合“不需要固定取值范围为[-1,1]”的要求

可直接运行的实现代码(numpy环境)

import numpy as np

def scale_align_median(x):
    # 兼容变量全为同一值的极端场景,避免除以0
    if np.ptp(x) == 0:
        return np.zeros_like(x)
    # 第一步:中位数中心化
    median_val = np.median(x)
    x_centered = x - median_val
    # 第二步:按最大绝对值等比例缩放
    max_abs = np.max(np.abs(x_centered))
    return x_centered / max_abs

关键注意点

  • 变换是纯平移+等比例缩放,不会扭曲变量内部的相对分布,箱线图展示的四分位距、离群点、极值的相对位置关系和原始数据完全一致
  • 绝对不要颠倒操作顺序:如果先缩放再平移中位数,平移后的取值会直接超出[-1,1]的范围,达不到约束效果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.24 22:45:05