实验误差与拟合误差的区别

介绍

作为一个做理论的人,之前对于误差分析关注不多,最近文章投稿时发现对于误差的分析比较欠缺,自己不是很懂,因此特地查阅学习了一遍,写一篇笔记记录。

实验误差

基本定义

首先是实验误差,也可以叫做测量误差,误差的定义首先要搞清楚,是指测量值和真实值之间的差值,首先是随机误差,是指某一次测量值和真实值之间的误差

其中$L{0}x{i}$为测量值。一般来说,我们可以用算数平均值来作为真实值的估计

将测量值与真实值的差值叫做残余误差,

接下来就是标准差,一个具有N个样本的系统的标准差定义为

同时我们一般只是抽取其中的n个样本进行衡量, ,因此根据样本的均值和方差代表总体时,记住均值是无偏的,但是方差是有篇的!详细推导维基百科相关词条都是有的,这里不再赘述。因此,样本的平均值为

定义样本的无偏标准差

其中 代表的是自由度,比如系统有 个变量,有 组数据,那么 .

我们要测量多个变量 $x{i}^{j}x{i}^{j}y=f(x{1},x{2},…)$ 。上面的误差是指由于多次测量造成与真实结果的区别,叫做A类误差。还有一类误差,是仪器造成的固有偏差,叫做b类误差。

误差的合成

然后是误差的合成,假设为了测量某个量我们需要测量 个独立的变量 $p{i}y=f(x{i},p{j})(x{i},p{j})p{j}i\sigma{p{j}}$ ,那么最终的测量值的误差为

上面只是A类误差的合成,如果还考虑到B类误差的话,总的误差为

拟合误差

一般拟合过程

上面是对于实验测量误差的一个简要介绍,接下来分析拟合的一个过程,一般我们测量了很多数据以后,会尝试对数据进行一个拟合,得出拟合的参数,拟合一般采用的是最小二乘法,即我们的目标函数是使得残差的平方和最小

这样一个二次型最小值的寻找,如果是线性的,直接求解即可,如果是非线性,则需要通过给定合适的初始值迭代寻找,比较常用的方法有高斯牛顿算法

其中,

为雅克比矩阵的矩阵元。也有更加复杂的拟合方式,这里不再赘述。

置信区间的表述

我们拟合完了之后,一般需要给出一个置信区间内的拟合参数的范围,比如拟合参数在之间,这是怎么得到的呢?首先来说置信区间,我们从高斯分布来看,高斯分布定义为

一般所说的 原则,即指我们有的把握,测量值的偏差落在 之间。MATLAB拟合时,一般采用 置信区间来表述,即我们有 的把握,测量值落在
之间,而 是使得

同时对于样本数较小的情况,我们的估计不能用高斯函数,而应该用学生氏函数 ,这里不再赘述。我么需要给定置信区间以及自由度,来计算出t值,比如我们需要 的置信区间,则可以

在自由度大于31之后,学生分布和高斯分布会越来越近。

误差的传递

我们通过拟合,找到了s的最小值,那么怎么得到对应变量的最小值呢?我们需要计算模型的雅克比矩阵

这个雅克比矩阵可以解析计算,也可以数值差分的方式计算,一般MATLAB或者Python都会把这个矩阵给出,然后根据如下公式,计算每一个参数的方差

然后要求某个置信区间的参数范围,只需要先求出

然后对应的参数在范围

MATLAB的一些函数fit,lsqsquare都可以直接获得拟合范围,一些函数如lsqcurvefit,或者Python的curve_fit等可能不会返回每一个变量的范围,但是会返回所需要的雅克比矩阵,这样我们也可以进行手动计算。

参考

Nonlinear curve fitting with parameter confidence intervals
Relation between Covariance matrix and Jacobian in Nonlinear Least Squares
Least-Squares Fitting
nlinfit