回归直线方程「建议收藏」

回归直线方程「建议收藏」回归直线方程线性回归方程的公式一个简单实现代码//************************************//函数名称:GetLineEquationDouble0//函数说明

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

回归直线方程

 

线性回归方程的公式

 

clip_image001

 

 

一个简单实现代码

 

           

 

//************************************

 

// 函数名称: GetLineEquationDouble0

 

// 函数说明: 求线性回归方程

//     :

 

//           const SPoint inPoint[MAX_PLATE_HEIGHT]     [in]    数据点

//           const int length                           [in]    点的数量

//           double * k                                 [out]   直线斜率

//           double * b                                 [out]   直线截距

// : byte

 

//************************************

 

byte GetLineParam(const SPoint *inPoint,constint length,double*k,double*b)

{

    int i=0;

    int sumX=0, sumY=0;

    double  xavg=0, yavg=0;

    int   sumXX =0;

    int sumXY =0;

    int tempK1 =0;

    double tempK =0;

    double tempB =0;

 

 

    if(length ==0)

    {

        *k =0;

        *b =0;

        return1;

    }

 

    sumX =0;

    sumY =0;

    sumXX =0;

    sumXY =0;

    for(i=0; i<length; i++)

    {

        sumX += inPoint[i].x;

        sumY += inPoint[i].y;

        sumXX += inPoint[i].x * inPoint[i].x;

        sumXY += inPoint[i].x * inPoint[i].y;

    }

 

    xavg = sumX / length;

    yavg = sumY / length;

 

    tempK1 = sumXX length * xavg * xavg;

   

 

    if(tempK1 ==0)

    {

        *k =0;

        *b =0;

        return1;

 

    }

 

    tempK =(sumXY length * xavg * yavg)/ tempK1;

 

    tempB = yavg tempK *  xavg;

 

    *k = tempK;

    *b = tempB;

 

    return1;

}

 

 

一个网上看的例子

 

某产品广告支出x万元,与销售额y万元之间有如下数据x=2,4,5,6,8y=30,40,60,50,70(1)求回归直线方程

(1)设回归线性方程为:y=bx+a
x的平均值=2+4+5+6+8/5=5
y的平均值=30+40+60+50+70/5=50
xi^2=2^2+4^2+5^2+6^2+8^2=145
xiyi=2*30+4*40+5*60+6*50+8*70=1380
根据公式:b=1380-5*5*50/(145-5*5^2)=6.5
                 a=50-6.5*5=17.5
则回归线性直线方程为:y=6.5x+17.5

 

 

简单的证明

 

用最小二乘法估计参数b ,分别求对a、b的偏导数并令它们等于零,得方程组并求解.

 

假设线性回归方程为: y=ax+b (1) 
a,b为回归系数,要用观测数据(x1,x2,…,xn和y1,y2,…,yn)确定之.
为此构造 Q(a,b)=Σ(i=1->n)[yi-(axi+b)]^2 (2)
使Q(a,b)取最小值的a,b为所求.
令: ∂Q/∂a= 2Σ(i=1->n)[yi-(axi+b)](-xi)= 0 (3)
∂Q/∂b= 2Σ(i=1->n)[yi-(axi+b)] = 0 (4)
根据(3)、(4)解出a ,b就确定了回归方程(1):
a Σ (Xi)² + b Σ Xi = Σ Xi Yi (5)
a Σ Xi + b n = Σ Yi (6)
由(5)(6)解出a,b便是,其中化简过程要用到Σ(i=1->n) (xi)  =  n T (T为X数据的均值)

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/168265.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • win10更改pip源方法

    win10更改pip源方法win10更改pip源win10安装TensorFlow卡崩具体做法win10安装TensorFlow卡崩更改为国内清华大学镜像源,即可。具体做法在c:\user(或者用户)\电脑的用户名\,目录下创建一个命名为“pip”的文件夹(如:C:\Users\Administrator\pip),在该文件夹下创建一个命名为“pip.ini”的文件,在该文件中写入以下内容:[global]in…

    2022年5月31日
    51
  • c中getline的用法_enum用法

    c中getline的用法_enum用法getline()用法getline是C++标准库函数;它有两种形式,一种是头文件<istream>中输入流成员函数;一种在头文件<string>中普通函数;它遇到以下情况发生会导致生成的本字符串结束:(1)到文件结束,(2)遇到函数的定界符,(3)输入达到最大限度。输入流成员函数getline()函数语法结构:在<istream>中的g…

    2025年7月20日
    3
  • Java配置方式读取外部的资源配置文件

    Java配置方式读取外部的资源配置文件

    2022年3月12日
    53
  • kali不能使用arpspoof命令_kali不能使用arpspoof命令_ARP欺骗工具arpspoof的用法「建议收藏」

    kali不能使用arpspoof命令_kali不能使用arpspoof命令_ARP欺骗工具arpspoof的用法「建议收藏」arpspoof是一个好用的ARP欺骗工具,Kalilinux中自带了该工具,在ubuntu中,安装它只需运行命令:sudoapt-getinstalldsniff安装完成后,输入命令:manarpspoof可以查看使用手册,2.4版本的手册内容如下(自己翻译的,非官方):名字arpspoof-截获交换局域网中的数据包用法arpspoof[-iinterface][-cow…

    2022年10月6日
    3
  • 史上最全安装Maven教程「建议收藏」

    史上最全安装Maven教程「建议收藏」史上最全安装Maven教程简单了解一下什么是Maven1.Maven翻译为“专家“,”内行”的意思,是著名Apache公司下基于Java开发的开源项目。2.Maven项目对象模型(POM)是一个项目管理工具软件,可以通过简短的中央信息描述来管理项目的搭建,报告和文档等步骤。3.Maven是一个项目管理的工具,可以对项目进行构建、依赖的管理。PS:(Gradle的项目搭建方式,将在不久的未来取代Maven,大势所趋。原因如何?小Du下期为您揭晓)一.官网下载下载官网→_→传送门二.配

    2022年6月4日
    31
  • LDA模型学习之(二)——主题的理解

    LDA模型学习之(二)——主题的理解

    2021年8月17日
    56

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号