如何计算多参数拟合的不确定性?基于reduced chi_squared的方法求解
双参数函数拟合基于约化卡方(reduced χ²)的不确定性计算流程
前置要求
- 已完成双参数模型
y = f(x; a, b)的最小二乘拟合,得到最优参数组合(a_opt, b_opt),以及对应的最小原始卡方值χ²_min - 计算约化卡方基准值:
χ²_red_min = χ²_min / ν,其中ν = N - 2为自由度,N是测量数据点总数,2是拟合参数个数
注意:合理拟合的
χ²_red_min应在1附近,若远大于1说明模型与数据匹配度差,远小于1说明测量误差被高估,两种情况都会导致不确定性计算结果失真,需先调整误差设置或模型再继续计算。
核心计算步骤
1. 确定约化卡方增量阈值
1σ置信水平下,双参数拟合对应的原始卡方增量固定为Δχ² = 2.30,对应约化卡方的增量阈值为Δχ²_red = 2.30 / ν。
我们需要找到所有满足χ²_red(a,b) ≤ χ²_red_min + Δχ²_red的参数组合(a,b),这些参数的取值范围就是置信度为1σ的不确定域。
若需要更高置信度,可替换对应原始卡方增量:2σ对应
Δχ²=6.18,3σ对应Δχ²=11.8,换算成约化卡方增量统一除以自由度ν即可。
2. 单参数不确定性扫描
固定其中一个参数,优化另一个参数的取值,即可逐个计算两个参数的独立不确定性:
- 固定参数a为某一偏离
a_opt的取值,拟合得到当前a下b的最优值,计算该参数组合对应的约化卡方χ²_red - 逐步增大a的取值,直到
χ²_red刚好等于χ²_red_min + Δχ²_red,此时a与a_opt的差值即为a的上偏差 - 逐步减小a的取值,重复上述操作得到a的下偏差
- 用相同逻辑固定b,扫描得到b的上下偏差
3. (可选)双参数联合置信域绘制
如果需要展示两个参数的相关性,可遍历参数空间,收集所有满足χ²_red(a,b) = χ²_red_min + Δχ²_red的(a,b)坐标点,这些点组成的闭合椭圆就是双参数的1σ联合置信域,椭圆的倾斜程度直接反映两个拟合参数的相关性大小。
结果验证
你可以用拟合输出的协方差矩阵结果做交叉验证:从协方差矩阵中提取的参数标准差,应与你扫描得到的对称单侧不确定性基本一致,偏差过大一般是扫描步长设置不合理、Δχ²阈值取错两个原因导致的。
参考伪代码
# 输入测量数据 x, y, y_err = 实验测量数据集 # 基础拟合得到最优参数和最小卡方 a_opt, b_opt, chi2_min = 最小二乘拟合函数(模型, x, y, y_err) nu = len(x) - 2 chi2_red_min = chi2_min / nu delta_chi2_red = 2.30 / nu # 1σ置信水平对应约化卡方增量 # 扫描参数a的上下偏差 a_upper = a_opt while 计算卡方(模型, a_upper, 拟合最优b(a_upper), x, y, y_err)/nu <= chi2_red_min + delta_chi2_red: a_upper += 0.01 # 步长可根据参数实际量级调整 a_lower = a_opt while 计算卡方(模型, a_lower, 拟合最优b(a_lower), x, y, y_err)/nu <= chi2_red_min + delta_chi2_red: a_lower -= 0.01 a_err = [a_opt - a_lower, a_upper - a_opt] # 相同逻辑计算参数b的偏差即可
内容的提问来源于stack exchange,提问作者rashed a564
相关产品推荐
相关产品推荐

