实验误差与拟合误差的区别与计算
实验误差与拟合误差的区别
介绍
作为一个做理论的人,之前对于误差分析关注不多,最近文章投稿时发现对于误差的分析比较欠缺,自己不是很懂,因此特地查阅学习了一遍,写一篇笔记记录。
实验误差
基本定义
首先是实验误差,也可以叫做测量误差,误差的定义首先要搞清楚,是指测量值和真实值之间的差值,首先是随机误差,是指某一次测量值和真实值之间的误差
其中$L{0}
将测量值与真实值的差值叫做残余误差,
接下来就是标准差,一个具有N个样本的系统的标准差定义为
同时我们一般只是抽取其中的n个样本进行衡量,
定义样本的无偏标准差
其中
我们要测量多个变量 $x{i}^{j}
误差的合成
然后是误差的合成,假设为了测量某个量我们需要测量
上面只是A类误差的合成,如果还考虑到B类误差的话,总的误差为
拟合误差
一般拟合过程
上面是对于实验测量误差的一个简要介绍,接下来分析拟合的一个过程,一般我们测量了很多数据以后,会尝试对数据进行一个拟合,得出拟合的参数,拟合一般采用的是最小二乘法,即我们的目标函数是使得残差的平方和最小
这样一个二次型最小值的寻找,如果是线性的,直接求解即可,如果是非线性,则需要通过给定合适的初始值迭代寻找,比较常用的方法有高斯牛顿算法
其中,
为雅克比矩阵的矩阵元。也有更加复杂的拟合方式,这里不再赘述。
置信区间的表述
我们拟合完了之后,一般需要给出一个置信区间内的拟合参数的范围,比如拟合参数在
一般所说的
之间,而
同时对于样本数较小的情况,我们的估计不能用高斯函数,而应该用学生氏函数
在自由度大于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