线性最小二乘拟合

本章描述使用线性组合函数对实验数据进行最小二乘拟合的例程。数据可以是加权的,也可以是未加权的,即带有已知的或未知的错误。对于加权数据,函数计算最佳拟合参数及其相关的协方差矩阵。对于未加权数据,由点的离散度估计协方差矩阵,给出一个方差-协方差矩阵。

这些函数分为简单单参数或双参数回归和多参数拟合的版本。

40.1 概述

最小二乘拟合是,通过χ2 (卡方分布)的最小化得出的,卡方分布是模型Y (c, x)的n个实验数据(xi, yi)的残差平方的加权和。

模型的p参数为c = {c0, c1,…}。加权因子wiwi = 1/σi2给出,其中σi为数据点yi上的实验误差。假设误差为高斯分布且不相关。。对于未加权数据,卡方和的计算没有任何权重因子。

拟合程序返回最佳拟合参数c及其p×p协方差矩阵。协方差矩阵度量由数据上的误差引起的最佳拟合参数上的统计误差σi,定义为

式中 表示基础数据点的高斯误差分布的平均值。

协方差矩阵由数据误差σi通过误差传播计算得到。给出了由数据δyi 的微小变化引起的拟合参数δca 的变化,

允许根据数据上的误差来写协方差矩阵,

对于不相关的数据,基础数据点的波动满足

给出相应的参数协方差矩阵

当计算协方差矩阵为无权重数据时,即数据与未知错误,和里面的权重因子wi 使用的是单一估计w = 1 /σ2,其中σ2是最佳模型计算残差的方差, 。这被称为方差-协方差矩阵。

最佳拟合参数的标准差由协方差矩阵对应对角元素σca =Caa 的平方根给出。拟合参数cacb的相关系数为

40.2 线性回归

本节中的函数用于拟合简单的一或两个参数线性回归模型。这些函数声明在头文件gsl_fit.h中。

40.2.1 带常数项的线性回归

本节描述的函数可用于对直线模型Y (c, x) = c0 + c1x执行最小二乘拟合。

int gsl_fit_linear(const double * x, const size_t xstride, const double * y,

const size_t ystride, size_t n, double * c0, double * c1,

double * cov00, double * cov01, double * cov11, double * sumsq)

本函数对数据集(x, y)计算模型Y = c0 + c1X的最佳拟合线性回归系数(c0, c1),(x, y)是步长xstride和ystride的两个长度为n的向量。假设y上的误差是未知的,因此参数(c0, c1)的方差-协方差矩阵是从最佳拟合线周围的点的散点估计出来的,并通过参数(cov00, cov01, cov11)返回。最佳拟合直线的残差平方和在sumsq中返回。注意:数据的相关系数可以使用gsl_stats_correlation()计算,它不依赖于拟合。

int gsl_fit_wlinear(const double * x, const size_t xstride, const double * w,

const size_t wstride, const double * y, const size_t ystride,

size_t n, double * c0, double * c1, double * cov00,

double * cov01, double * cov11, double * chisq)

本函数用加权数据集(x, y)计算模型Y = c0 + c1X的最佳拟合线性回归系数(c0, c1),(x, y)是步长xstride和ystride的两个长度为n的向量。向量w长度是n,步长wstride,指定了每个数据点的权重。权重是y中每个数据点方差的倒数。

参数(c0, c1)的协方差矩阵使用权重计算,并通过参数(cov00, cov01, cov11)返回。最佳拟合直线的残差的加权平方和χ2 以chisq返回。

int gsl_fit_linear_est(double x, double c0, double c1, double cov00, double cov01,

double cov11, double * y, double * y_err)

本函数使用最佳拟合线性回归系数c0、c1及其协方差cov00、cov01、cov11计算模型Y = c0 + c1X在x点处的拟合函数y及其标准差y_err。

40.2.2 不带常数项的线性回归

本节描述的函数可用于对没有常数项Y = c1X的直线模型执行最小二乘拟合。

int gsl_fit_mul(const double * x, const size_t xstride, const double * y,

const size_t ystride, size_t n, double * c1, double * cov11,

double * sumsq)

本函数计算数据集(x, y)的模型Y = c1X的最佳拟合线性回归系数c1,(x, y)是步长xstride和ystride的两个长度为n的向量。假设y上的误差是未知的,因此参数c1的方差是由最佳拟合线周围的点的散点估计的,并通过参数cov11返回。最佳拟合直线的残差平方和在sumsq中返回。

int gsl_fit_wmul(const double * x, const size_t xstride, const double * w,

const size_t wstride, const double * y, const size_t ystride,

size_t n, double * c1, double * cov11, double * sumsq)

本函数计算加权数据集(x, y)模型Y = c1X的最佳拟合线性回归系数c1,(x, y)是步长xstride和ystride的两个长度为n的向量。向量w长度是n,步幅wstride,指定每个数据点的权重。权重是y中每个数据点方差的倒数。

使用权重计算参数c1的方差,并通过参数cov11返回。最佳拟合直线的残差的加权平方和χ2 以chisq返回。

int gsl_fit_mul_est(double x, double c1, double cov11, double * y, double * y_err)

本函数使用最佳拟合线性回归系数c1及其协方差cov11计算模型Y = c1X在x点处的拟合函数y及其标准差y_err。

40.3 多参数回归

本节描述通过最小化成本函数来执行最小二乘拟合线性模型的例程,

其中,yn个观测值的向量,X是n乘p的预测变量矩阵,cp个待估计的未知最佳拟合参数的向量,。矩阵W=diag(w1,w2,...,wn)定义了观测向量的权重或不确定性。

通过适当地准备np矩阵X这个公式可以用于适合任何数量的函数和(或)变量。例如,要拟合x的一个p阶多项式,使用下面的矩阵,

索引i遍历观察值,索引j从0到p−1。

拟合一组固定频率的p正弦函数ω1, ω2, . . ., ωp,使用,

为了拟合p个自变量x1,x2,…,xp,使用

Xij=xj(i)

式中,xj(i) 为预测变量xj 的第i个值。

一般线性最小二乘系统的解需要为中间结果提供额外的工作空间,例如矩阵X的奇异值分解。

这些函数声明在头文件gsl_multifit.h中。

gsl_multifit_linear_workspace

此工作空间包含用于拟合多参数模型的内部变量。

gsl_multifit_linear_workspace * gsl_multifit_linear_alloc(const size_t n,

const size_t p)

本函数分配了一个工作空间,用于拟合一个模型,最大n个观测值,使用最大p个参数。如果需要,用户可以稍后提供一个更小的最小二乘系统。工作空间的大小为O(np + p2)。

void gsl_multifit_linear_free(gsl_multifit_linear_workspace * work)

本函数释放与工作空间w相关的内存。

int gsl_multifit_linear_svd(const gsl_matrix * X,

gsl_multifit_linear_workspace * work)

本函数对矩阵X进行奇异值分解,并在work内部存储SVD因子。

int gsl_multifit_linear_bsvd(const gsl_matrix * X,

gsl_multifit_linear_workspace * work)

本函数对矩阵X进行奇异值分解,并在work内部存储SVD因子。首先利用列比例因子对矩阵X进行平衡,以提高奇异值的精度。

int gsl_multifit_linear(const gsl_matrix * X, const gsl_vector * y, gsl_vector * c,

gsl_matrix * cov, double * chisq,

gsl_multifit_linear_workspace * work)

本函数利用work中提供的预先分配的工作空间,根据观测值y和预测变量X的矩阵,计算模型y = Xc的最佳拟合参数c。将模型参数cov的pp方差-协方差矩阵设为σ2(XTX)−1,其中σ为拟合残差的标准差。最佳拟合的残差平方和(χ2 )以chisq的形式返回。如果需要确定系数,可以用表达式R2 = 1−χ2 /TSS计算,其中观测值y的总平方和(TSS)可以用gsl_stats_tss()计算。

采用改进的Golub-Reinsch SVD算法对矩阵X进行奇异值分解,获得最佳拟合,并进行列缩放,提高奇异值的精度。任何奇异值为零(机器精度)的部件在拟合中被丢弃。

int gsl_multifit_linear_tsvd(const gsl_matrix * X, const gsl_vector * y,

const double tol, gsl_vector * c, gsl_matrix * cov,

double * chisq, size_t * rank,

gsl_multifit_linear_workspace * work)

本函数对观测值y和预测变量X的矩阵使用截断SVD展开,计算模型y = Xc的最佳拟合参数c。在拟合中丢弃满足sitol×s0的奇异值,其中s0为最大奇异值。将模型参数cov的pp方差-协方差矩阵设为σ2(XTX)−1,其中σ为拟合残差的标准差。最佳拟合的残差平方和(χ2 )以chisq的形式返回。有效秩(解中使用的奇异值的数量)按秩返回。如果需要确定系数,可以用表达式R2 = 1−χ2 /TSS计算,其中观测值y的总平方和(TSS)可以用gsl_stats_tss()计算。

int gsl_multifit_wlinear(const gsl_matrix * X, const gsl_vector * w,

const gsl_vector * y, gsl_vector * c, gsl_matrix * cov,

double * chisq, gsl_multifit_linear_workspace * work)

本函数利用work中提供的预先分配的工作空间,计算加权模型y = Xc对观测值y的最佳拟合参数c,权重为w,预测值变量矩阵为X。模型参数cov的pp协方差矩阵计算为(XTWX)−1。最佳拟合残差的加权平方和(χ2 ),以chisq返回。如果想要确定系数,可以用表达式R2 = 1−χ2 /WTSS计算,其中观测值y的加权总平方和(WTSS)可以用gsl_stats_wtss()计算。

int gsl_multifit_wlinear_tsvd(const gsl_matrix * X, const gsl_vector * w,

const gsl_vector * y, const double tol, gsl_vector * c,

gsl_matrix * cov, double * chisq, size_t * rank,

gsl_multifit_linear_workspace * work)

本函数对观测值y和预测变量X的矩阵使用截断SVD展开,计算模型y = Xc的最佳拟合参数c。在拟合中丢弃满足sitol×s0的奇异值,其中s0为最大奇异值。模型参数cov的pp协方差矩阵计算为(XTWX)−1。最佳拟合的残差的加权平方和(χ2 )以chisq的形式返回。系统的有效秩(解中使用的奇异值的数量)按秩返回。如果想要确定系数,可以用表达式R2 = 1−χ2 /WTSS计算,其中观测值y的加权总平方和(WTSS)可以用gsl_stats_wtss()计算。

int gsl_multifit_linear_est(const gsl_vector * x, const gsl_vector * c,

const gsl_matrix * cov, double * y, double * y_err)

本函数使用最佳拟合多元线性回归系数c及其协方差矩阵cov计算模型y = x.c在x点处的拟合函数值y及其标准差y_err。

int gsl_multifit_linear_residuals(const gsl_matrix * X, const gsl_vector * y,

const gsl_vector * c, gsl_vector * r)

本函数用观测值y、系数c和预测变量X的矩阵,计算残差向量r = yXc

size_t gsl_multifit_linear_rank(const double tol,

const gsl_multifit_linear_workspace * work)

本函数返回矩阵X的秩,它必须首先计算其奇异值分解。秩是通过计算满足σj> tol×σ0的奇异值σj的个数来计算的,其中σ0为最大奇异值。

GSL中的线性最小二乘拟合相关推荐

  1. GSL中的非线性最小二乘拟合

    非线性最小二乘拟合 本章描述多维非线性最小二乘拟合的函数.求解非线性最小二乘问题一般有两类算法,即行搜索法和信赖域法.GSL目前只实现信赖域法,并为用户提供对迭代中间步骤的完全访问.用户还能够调优一些 ...

  2. 使用GSL库实现非线性最小二乘拟合—原理与C代码实现(VS2019)

    目录 一.参考 二.非线性最小二乘 三.GSL库中非线性最小二乘拟合部分 1. gsl_multifit_nlinear_parameters结构体 2. gsl_multifit_nlinear_t ...

  3. 最小二乘拟合,L1、L2正则化约束--转

    原文地址:http://blog.csdn.net/u013164528/article/details/45042895 最小二乘法(又称最小平方法)是一种数学优化技术.它通过最小化误差的平方和寻找 ...

  4. 曲线拟合——最小二乘拟合(附代码)

    曲线拟合--最小二乘拟合(附代码) 曲线拟合 1 一元函数的最小二乘拟合 1.1 线性回归(直线的最小二乘拟合) 1.1.1 直线的最佳拟合方法 1.1.2 如何计算 1.1.3 误差量化分析 1.2 ...

  5. Matlab最小二乘法:线性最小二乘、加权线性最小二乘、稳健最小二乘、非线性最小二乘与剔除异常值效果比较

    最近我们被客户要求撰写关于最小二乘法的研究报告,包括一些图形和统计输出.matlab软件在拟合数据时使用最小二乘法.拟合需要一个参数模型,该模型将因变量数据与具有一个或多个系数的预测数据相关联.拟合过 ...

  6. MATLAB最小二乘拟合

    最小二乘拟合 线性最小二乘拟合 非线性最小二乘法 线性最小二乘拟合 1.polyfit 例:a= polyfit(x0,y0,m) 其中,输入参数x0,y0为要拟合的数据,m为拟合多项式的次数(一般不 ...

  7. python非线性最小二乘拟合_非线性函数的最小二乘拟合——兼论Jupyter notebook中使用公式 [原创]...

    突然有个想法,利用机器学习的基本方法--线性回归方法,来学习一阶rc电路的阶跃响应,从而得到rc电路的结构特征--时间常数τ(即r*c).回答无疑是肯定的,但问题是怎样通过最小二乘法.正规方程,以更多 ...

  8. 使用tensorflow实现机器学习中的线性拟合

    使用tensorflow实现机器学习中的线性拟合 这个例子是模拟的单变量线性回归,通过提高单变量的阶数来增加特征数量,例如:4阶相当于分解为四个特征 这种思想同样适用于多变量线性回归 import t ...

  9. python画抛物线_在python中利用最小二乘拟合二次抛物线函数的方法

    1.最小二乘也可以拟合二次函数 我们都知道用最小二乘拟合线性函数没有问题,那么能不能拟合二次函数甚至更高次的函数呢?答案当然是可以的.下面我们就来试试用最小二乘来拟合抛物线形状的的图像. 对于二次函数 ...

最新文章

  1. 一次性动态绑定多个droplistdown
  2. 2.异步回调检测线程结束
  3. en结尾的单词_以en结尾的英语单词
  4. .NET 6 使用 Obfuscar 进行代码混淆
  5. The Water Bowls POJ - 3185(开关问题+暴力)
  6. 关于Pac-Man,你所要了解的 一切
  7. python如何在exel中编程_如何使用Python以编程方式将行添加到现有Excel表中
  8. 动态数据的国际化、几种主要的国际化标签
  9. hexo需要先编辑好html文件吗,教你定制Hexo的landscape打造自己的主题_html/css_WEB-ITnose...
  10. 10种电脑无法启动故障
  11. debain服务器系统用什么,建站服务器系统用CentOS还是Debian 适合自己才好
  12. tcl c语言笔试题,TCL 2019校园招聘备战-求职应聘指南(笔试真题面试经验).pdf
  13. 数学乐 --- 对数函数(指数函数的反函数)
  14. Oplayer HDiPad最实用的视频播放器
  15. Codeforces Round #548 (Div. 2) 1139 D+2021天梯赛l3-3 解题报告(负二项式分布+莫比乌斯容斥+杜教筛(天梯赛))
  16. 快手开店怎么引流?快手小店自上线以来就吸引众多的商家入驻
  17. Android 点击换头像(拍照和从相册选择)
  18. 在StarRocks中建立ClickHouseJDBC外表
  19. Metaq原理与应用
  20. 相片打印机原理_喷墨打印机工作原理 喷墨打印机优缺点介绍【详解】

热门文章

  1. 创新案例|“丑鞋”Crocs如何做到年收入增长67%?
  2. 计算机视觉论文-2021-09-15
  3. SQL 怎么用cmd执行.sql文件
  4. 最新年龄划分标准出台,对照过后惊呆了
  5. 回想2020,仿佛就在昨天
  6. 图像拼接之APAP算法代码详解
  7. 透过四款商用的 IoT 产品解析 UX 设计本质
  8. 为什么大家都用C语言开发单片机,原因都在这啦
  9. 基本固件框架的追踪研读之SETUP命令的处理2
  10. 如何看待有些家庭“财产归儿子,父母生病养老归女儿”?