如何计算可覆盖95%平面坐标点的圆半径,已测x/y方向标准差方法失效
问题解答
核心问题说明
你之前的计算逻辑仅适用于单变量正态分布的置信区间估算,二维场景下点到中心的距离分布和两个独立变量的平方和相关,且你测试用的是截断正态分布,不满足普通正态分布假设,自然无法得到正确的半径。
可行方案
方案1:无分布假设的统计法(推荐,适配所有数据类型)
不需要假设数据分布,直接基于现有采样点计算,步骤如下:
- 计算所有点到目标圆心(你的场景中为(0,0))的欧氏距离
- 将所有距离升序排序
- 取95百分位的距离值作为半径,即可刚好圈住95%的采样点
对应代码补充在你生成cal_x、cal_y的逻辑之后即可:
import numpy as np # 计算所有点到原点的欧氏距离 distances = np.sqrt(cal_x ** 2 + cal_y ** 2) # 取95百分位作为半径 cal_r = np.percentile(distances, 95)
方案2:参数法(仅适用于非截断二维正态分布场景)
如果你的实测数据符合零均值、x/y独立的二维正态分布,可通过卡方分布分位数计算半径:
二维正态分布下,(x/std_x)² + (y/std_y)² 服从自由度为2的卡方分布,95%置信度对应的分位数为5.991,半径计算公式如下:
import scipy.stats as stats # 自由度为2的卡方分布95%分位数 chi2_q95 = stats.chi2.ppf(0.95, df=2) cal_r = np.sqrt(chi2_q95 * (cal_x_std**2 + cal_z_std**2))
注意该方案不适用于你当前测试用的截断正态分布场景,结果会偏保守。
其他提示
你代码中毕达哥拉斯的英文拼写有误,正确拼写为Pythagoras。
内容的提问来源于stack exchange,提问作者A turtle
相关产品推荐
相关产品推荐

