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

Python中未知曲线方程时,如何获取累积分布对应Y分段的X值?

正确实现Y轴等分下的X轴分段方法

你的核心问题是混淆了torch.quantile的输入对象,或者对CDF与分位数的对应关系理解有误。以下分两种场景给出正确实现:

场景1:你拥有X的样本数据

如果手上是从目标分布中采样得到的X样本(比如批量X值),直接对X样本求对应Y分位点的分位数即可:

  1. 定义Y轴的等分分段点(5段需要6个分界点,对应累积概率0到1,步长0.2)
  2. 用torch.quantile计算X样本在这些概率点上的分位数,结果就是对应的X轴分段点
import torch

# 替换成你的真实X样本数据
x_samples = torch.normal(mean=5.0, std=2.0, size=(10000,))

# Y轴等分成5段的概率分界点
y_quantiles = torch.tensor([0.0, 0.2, 0.4, 0.6, 0.8, 1.0])

# 计算对应的X轴分段点
x_segments = torch.quantile(x_samples, y_quantiles)

注意:这里得到的x_segments直接是X轴的原始范围值,不需要再乘以X轴范围,除非你的X样本已经被归一化到0-1区间。

场景2:你已经有CDF的离散曲线数据

如果手上是一组(x_i, cdf_i)的离散点(x_i是X轴值,cdf_i是对应累积概率),需要用插值法找到Y等分点对应的X值:

  1. 确保cdf_i是单调递增的(符合CDF的固有性质)
  2. 用torch.interp根据Y的等分点,在CDF曲线上插值得到对应的X值
import torch

# 替换成你的真实CDF离散数据
x_values = torch.linspace(0, 10, 100)  # X轴离散点
cdf_values = torch.distributions.Normal(5.0, 2.0).cdf(x_values)  # 对应累积概率

# Y轴等分成5段的概率分界点
y_quantiles = torch.tensor([0.0, 0.2, 0.4, 0.6, 0.8, 1.0])

# 插值得到X轴分段点
x_segments = torch.interp(y_quantiles, cdf_values, x_values)

你原方法的错误原因

  • 若你把CDF的累积概率值(Y值)传给了torch.quantile的第一个参数,这完全错误——torch.quantile的输入是X的样本集合,不是CDF的Y值。
  • 若你对X样本做了归一化后又重复乘以X范围,会导致结果偏离真实值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 11:52:11