最小二乘拟合(转)good
在物理实验中经常要观测两个有函数关系的物理量。根据两个量的许多组观测数据来确定它们的函数曲线,这就是实验数据处理中的曲线拟合问题。这类问题通常有两种情况:一种是两个观测量x与y之间的函数形式已知,但一些参数未知,需要确定未知参数的最佳估计值;另一种是x与y之间的函数形式还不知道,需要找出它们之间的经验公式。后一种情况常假设x与y之间的关系是一个待定的多项式,多项式系数就是待定的未知参数,从而可采用类似于前一种情况的处理方法。
一、最小二乘法原理
在两个观测量中,往往总有一个量精度比另一个高得多,为简单起见把精度较高的观测量看作没有误差,并把这个观测量选作x,而把所有的误差只认为是y的误差。设x和y的函数关系由理论公式
y=f(x;c1,c2,……cm) (0-0-1)
给出,其中c1,c2,……cm是m个要通过实验确定的参数。对于每组观测数据(xi,yi)i=1,2,……,N。都对应于xy平面上一个点。若不存在测量误差,则这些数据点都准确落在理论曲线上。只要选取m组测量值代入式(0-0-1),便得到方程组
yi=f(x;c1,c2,……cm) (0-0-2)
式中i=1,2,……,m.求m个方程的联立解即得m个参数的数值。显然N<m时,参数不能确定。
在N>m的情况下,式(0-0-2)成为矛盾方程组,不能直接用解方程的方法求得m个参数值,只能用曲线拟合的方法来处理。设测量中不存在着系统误差,或者说已经修正,则y的观测值yi围绕着期望值 <f(x;c1,c2,……cm)> 摆动,其分布为正态分布,则yi的概率密度为
,
式中 是分布的标准误差。为简便起见,下面用C代表(c1,c2,……cm)。考虑各次测量是相互独立的,故观测值(y1,y2,……cN)的似然函数
.
取似然函数L最大来估计参数C,应使
(0-0-3)
取最小值:对于y的分布不限于正态分布来说,式(0-0-3)称为最小二乘法准则。若为正态分布的情况,则最大似然法与最小二乘法是一致的。因权重因子 ,故式(0-0-3)表明,用最小二乘法来估计参数,要求各测量值yi的偏差的加权平方和为最小。
根据式(0-0-3)的要求,应有
从而得到方程组
(0-0-4)
解方程组(0-0-4),即得m个参数的估计值 ,从而得到拟合的曲线方程 。
然而,对拟合的结果还应给予合理的评价。若yi服从正态分布,可引入拟合的x2量,
(0-0-5)
把参数估计 代入上式并比较式(0-0-3),便得到最小的x2值
(0-0-6)
可以证明, 服从自由度v=N-m的x2分布,由此可对拟合结果作x2检验。
由x2分布得知,随机变量 的期望值为N-m。如果由式(0-0-6)计算出 接近N-m(例如 ),则认为拟合结果是可接受的;如果 ,则认为拟合结果与观测值有显著的矛盾。
二、直线的最小二乘拟合
曲线拟合中最基本和最常用的是直线拟合。设x和y之间的函数关系由直线方程
y=a0+a1x (0-0-7)
给出。式中有两个待定参数,a0代表截距,a1代表斜率。对于等精度测量所得到的N组数据(xi,yi),i=1,2……,N,xi值被认为是准确的,所有的误差只联系着yi。下面利用最小二乘法把观测数据拟合为直线。
1.直线参数的估计
前面指出,用最小二乘法估计参数时,要求观测值yi的偏差的加权平方和为最小。对于等精度观测值的直线拟合来说,由式(0-0-3)可使
(0-0-8)
最小即对参数a(代表a0,a1)最佳估计,要求观测值yi的偏差的平方和为最小。
根据式(0-0-8)的要求,应有
整理后得到正规方程组
解正规方程组便可求得直线参数a0和a1的最佳估计值 和 。即
(0-0-10)
(0-0-11)
2.拟合结果的偏差
由于直线参数的估计值 和 是根据有误差的观测数据点计算出来的,它们不可避免地存在着偏差。同时,各个观测数据点不是都准确地落地拟合线上面的,观测值yi与对应于拟合直线上的 这之间也就有偏差。
首先讨论测量值yi的标准差S。考虑式(0-0-6),因等精度测量值yi所有的 都相同,可用yi的标准偏差S来估计,故该式在等精度测量值的直线拟合中应表示为
(0-0-12)
已知测量值服从正态分布时, 服从自由度v=N-2的x2分布,其期望值
由此可得yi的标准偏差
(0-0-13)
这个表示式不难理解,它与贝塞尔公式是一致的,只不过这里计算S时受到两参数 和 估计式的约束,故自由度变为N-2罢了。
式(0-0-13)所表示的S值又称为拟合直线的标准偏差,它是检验拟合结果是否有效的重要标志。如果xy平面上作两条与拟合直线平行的直线
如图0-0-1所示,则全部观测数据点(xi,yi)的分布,约有68.3%的点落在这两条直线之间的范围内。
图0-0-1 拟合直线两侧数据点的分布
下面讨论拟合参数偏差,由式(0-0-10)和(0-0-11)可见,直线拟合的两个参数估计值 和 是yi的函数。因为假定xI是精确的,所有测量误差只有yi有关,故两个估计参数的标准偏差可利用不确定度传递公式求得,即
把式(0-0-10)与(0-0-11)分别代入上两式,便可计算得
(0-0-14)
(0-0-15)
三、相关系数及其显著性检验
当我们把观测数据点(xi,yi)作直线拟合时,还不大了解x与y之间线性关系的密切程度。为此要用相关系数ρ(x,y)来判断。其定义已由式(0-0-12)给出,现改写为另一种形式,并改用r表示相关系数,得
(0-0-16)
式中 和 分别为x和y的算术平均值。r值范围介于-1与+1之间,即-1≤r≤1。当r>0时直线的斜率为正,称正相关;当r<0时直线的斜率为负,称负相关。当|r|=1时全部数据点(xi,yi)都落在拟合直线上。若r=0则x与y之间完全不相关。r值愈接近±1则它们之间的线性关系愈密切。
http://www.cnblogs.com/wenrenhua08/archive/2008/10/08/3993629.html
最小二乘拟合(转)good的更多相关文章
- OpenCV 最小二乘拟合方法求取直线倾角
工业相机拍摄的图像中,由于摄像质量的限制,图像中的直线经过处理后,会表现出比较严重的锯齿.在这种情况下求取直线的倾角(其实就是直线的斜率),如果是直接选取直线的开始点和结束点来计算,或是用opencv ...
- python 最小二乘拟合,反卷积,卡方检验
import numpy as np # from enthought.mayavi import mlab ''' ogrid[-1:5:6j,-1:5:6j] [array([[-1. ], [ ...
- halcon之最小二乘拟合直线
如果不了解最小二乘算法 请先阅读: Least squares的算法细节原理https://en.wikipedia.org/wiki/Least_squares 通常在halcon中拟合直线会用ho ...
- 非线性函数的最小二乘拟合及在Jupyter notebook中输入公式 [原创]
突然有个想法,能否通过学习一阶RC电路的阶跃响应得到RC电路的结构特征——时间常数τ(即R*C).回答无疑是肯定的,但问题是怎样通过最小二乘法.正规方程,以更多的采样点数来降低信号采集噪声对τ估计值的 ...
- 最小二乘拟合(scipy实现)
Scipy库在numpy库基础上增加了众多数学,科学及工程计算中常用库函数.如线性代数,常微分方程数值求解,信号处理,图像处理,稀疏矩阵等. 如下理解通过Scipy进行最小二乘法拟合运算 最小二乘拟合 ...
- 数值分析实验之曲线最小二乘拟合含有噪声扰动(python实现)
一.实验目的 掌握最小二乘法拟合离散数据,多项式函数形式拟合曲线以及可以其他可以通过变量变换转化为多项式的拟合曲线目前待实现功能: 1. 最小二乘法的基本实现. 2. 用不同数据量,不同参数,不同的多 ...
- 用正交多项式作最小二乘拟合的java实现(转)
import java.util.Scanner; public class Least_square_fit { public static double Least_square_method(i ...
- [CC]平面拟合
常见的平面拟合方法一般是最小二乘法.当误差服从正态分布时,最小二乘方法的拟合效果还是很好的,可以转化成PCA问题. 当观测值的误差大于2倍中误差时,认为误差较大.采用最小二乘拟合时精度降低,不够稳健. ...
- Matlab:拟合(2)
非线性最小二乘拟合: 解法一:用命令lsqcurvefit function f = curvefun(x, tdata) f = x() + x()*exp() * tdata); %其中x() = ...
随机推荐
- 【JDBC】向数据表插入数据时,自动获取生成的主键
数据表设计时,一般都会有一个主键(Key)(自己指定),有时也可以使用联合主键: 有许多数据库提供了隐藏列为表中的每行记录分配一个唯一键值(如:rowid): 当我们没有指定哪一列作为主键key时,数 ...
- Env: Linux下Source Insight安装
1.Wine安装 sudo apt-get install wine 如果有错误,可以sudo apt-get update 2.下载source insight,注意要是安装版 http://www ...
- Python之re模块 —— 正则表达式操作
这个模块提供了与 Perl 相似l的正则表达式匹配操作.Unicode字符串也同样适用. 正则表达式使用反斜杠" \ "来代表特殊形式或用作转义字符,这里跟Python的语法冲突, ...
- Lnmp环境的自搭建
### 备选#### 安装开发者工具包 (简约版的可能要安装一下) yum groupinstall "Development tools" ########## 1.准备 php ...
- [Android Exception 1A] -com.android.volley.NoConnectionError: java.io.InterruptedIOException
- ::-/com.tongyan.tutelage W/System.err: com.android.volley.NoConnectionError: java.io.InterruptedIO ...
- PLSQL_性能优化系列02_Oracle Join关联
2014-09-25 Created By BaoXinjian
- bug_ _fragment_“The specified child already has a parent. You must call removeView"的解决以及产生的原因
这个异常的出现往往是因为非法使用了某些方法引起的. 从字面意思上是说这个特定的child已经有一个parent了,你必须在这个parent中首先调用removeView()方法,才能继续你的内容.这里 ...
- 并发工具类(三)控制并发线程数的Semaphore
原文:http://ifeve.com/concurrency-semaphore/#more-14753 简介 Semaphore(信号量)是用来控制同时访问特定资源的线程数量,它通过协调各个线程, ...
- Python进阶08 异常处理
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 本文特别感谢kylinfish的纠正,相关讨论见留言区. 异常处理 在项目开发中, ...
- iOS推送通知的实现步骤
一.关于推送通知 来源:http://blog.csdn.net/enuola/article/details/8627283 推送通知,也被叫做远程通知,是在iOS 3.0以后被引入的功能.是当程序 ...