C-中经常使用线性回归启动数据拟合 (c++的惯用法)
简介
structDataPoint{doublex;doubley;};
std::vector<DataPoint>dataPoints;
voidleastSquares(conststd::vector<DataPoint>&dataPoints,double&slope,double&intercept){//计算斜率和截距//...}
std::cout<<"拟合直线的方程为:y="<<slope<<"x+"<<intercept<<std::endl;
假定咱们有一组散点数据:
P1(1,3)P2(2,5)P3(3,7)P4(4,9)P5(5,11)P6(6,13)P7(7,15)P8(8,17)P9(9,19)
#include<tream>#include<vector>#include<numeric>usingParameter=struct{doublek;//斜率doubleb;//截距};//最小二乘法计算环节boolLeastSquares(std::vector<double>&X,std::vector<double>&Y,Parameter¶m){if(X.empty()||Y.empty())returnfalse;intn=X.size();doublesumX=std::accumulate(X.begin(),X.end(),0.0);doublesumY=std::accumulate(Y.begin(),Y.end(),0.0);doublesumXY=0.0;doublesumX2=0.0;for(inti=0;i<n;i++){sumXY+=X[i]*Y[i];sumX2+=X[i]*X[i];}doublemeanX=sumX/n;doublemeanY=sumY/n;param.k=(sumXY-n*meanX*meanY)/(sumX2-n*meanX*meanX);param.b=meanY-param.k*meanX;returntrue;}intmn(){std::vector<double>X={1,2,3,4,5,6,7,8,9};std::vector<double>Y={3,5,7,9,11,13,15,17,19};Parameterparam;if(LeastSquares(X,Y,param)){std::cout<<"拟合直线的方程为:y="<<param.k<<"x+"<<param.b<<std::endl;}else{std::cout<<"拟合失败"<<std::endl;}return0;}
线性拟合是什么意思?怎么用?
线性拟合是一种通过线性方程来拟合实验数据或样本数据的方法。 线性方程是指一个或多个变量的一次函数,形式可以表示为y = mx + c,其中y是被预测或拟合的变量,x是自变量,m是斜率,c是截距。 线性拟合的目标是找到最佳的斜率和截距,使得拟合函数与实验数据或样本数据的差异最小化。 这可以通过最小二乘法来实现,即通过最小化残差平方和来确定最佳的斜率和截距。 要进行线性拟合,可以按照以下步骤进行:1. 收集实验数据或样本数据,其中包含自变量x和对应的被预测或拟合的变量y的数值。 2. 构建线性方程,形式为y = mx + c。 3. 使用最小二乘法计算最佳的斜率m和截距c,使得拟合函数与数据的差异最小化。 4. 使用得到的最佳斜率和截距,可以预测或拟合其他未知的数据点。 线性拟合通常用于分析数据之间的线性关系,并进行预测或拟合未知的数据点。 它可以在各种领域中应用,如统计学、经济学、物理学和工程学等。
怎样用线性回归分析?
线性回归方程公式:b=(x1y1+x2y2+-nXY)/(x1+x2+-nX)。线性回归方程是利用数理统计中的回归分析,来确定两种或两种以上变数间相互依赖的定量关系的一种统计分析方法之一,应用十分广泛。
一、概念
线性回归方程中变量的相关关系最为简单的是线性相关关系,设随机变量与变量之间存在线性相关关系,则由试验数据得到的点,将散布在某一直线周围。因此,可以认为关于的回归函数的类型为线性函数。
分析按照自变量和因变量之间的关系类型,可分为线性回归分析和非线性回归分析。如果在回归分析中,只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析。如果回归分析中包括两个或两个以上的自变量,且因变量和自变量之间是线性关系,则称为多元线性回归分析。
二、计算方法
线性回归方程公式求法:
第一:用所给样本求出两个相关变量的(算术)平均值:
x_=(x1+x2+x3+...+xn)/n
y_=(y1+y2+y3+...+yn)/n
第二:分别计算分子和分母:(两个公式任选其一)
分子=(x1y1+x2y2+x3y3+...+xnyn)-nx_Y_
分母=(x1^2+x2^2+x3^2+...+xn^2)-n*x_^2
第三:计算b:b=分子/分母
用最小二乘法估计参数b,设服从正态分布,分别求对a、b的偏导数并令它们等于零,得方程组解为
其中,且为观测值的样本方差.线性方程称为关于的线性回归方程,称为回归系数,对应的直线称为回归直线.顺便指出,将来还需用到,其中为观测值的样本方差。
先求x,y的平均值X,Y
再用公式代入求解:b=(x1y1+x2y2+-nXY)/(x1+x2+-nX)
后把x,y的平均数X,Y代入a=Y-bX
求出a并代入总的公式y=bx+a得到线性回归方程
(X为xi的平均数,Y为yi的平均数)
三、应用
线性回归方程是回归分析中第一种经过严格研究并在实际应用中广泛使用的类型。这是因为线性依赖于其未知参数的模型比非线性依赖于其位置参数的模型更容易拟合,而且产生的估计的统计特性也更容易确定。
线性回归有很多实际用途。分为以下两大类:
如果目标是预测或者映射,线性回归可以用来对观测数据集的和X的值拟合出一个预测模型。当完成这样一个模型以后,对于一个新增的X值,在没有给定与它相配对的y的情况下,可以用这个拟合过的模型预测出一个y值。
给定一个变量y和一些变量X1,...,Xp,这些变量有可能与y相关,线性回归分析可以用来量化y与Xj之间相关性的强度,评估出与y不相关的Xj,并识别出哪些Xj的子集包含了关于y的冗余信息。
在线性回归中,数据使用线性预测函数来建模,并且未知的模型参数也是通过数据来估计。这些模型被叫做线性模型。最常用的线性回归建模是给定X值的y的条件均值是X的仿射函数。
不太一般的情况,线性回归模型可以是一个中位数或一些其他的给定X的条件下y的条件分布的分位数作为X的线性函数表示。像所有形式的回归分析一样,线性回归也把焦点放在给定X值的y的条件概率分布,而不是X和y的联合概率分布。
免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。