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

回归直线方程「建议收藏」回归直线方程线性回归方程的公式一个简单实现代码//************************************//函数名称: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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • STM32 的优先级NVIC配置

    STM32 的优先级NVIC配置1、NVIC优先级介绍2、NVIC优先级比较提条件1:组别优先顺序(第0组优先级最强,第4组优先级最弱):*强调内容***NVIC_PriorityGroup_0>NVIC_PriorityGroup_1>NVIC_PriorityGroup_2>NVIC_PriorityGroup_3>NVIC_PriorityGroup_4前提条件2:“组”优先级别>“抢”占优先级别>“副”优先级别前提

    2022年5月20日
    37
  • git查看用户名和邮箱 -切换用户和邮箱[通俗易懂]

    git查看用户名和邮箱 -切换用户和邮箱[通俗易懂]git用户查看和切换

    2022年9月7日
    0
  • MybatisPlus逻辑删除

    MybatisPlus逻辑删除**MybatisPlus逻辑删除的使用**首先我们要知道为什么要进行逻辑删除:逻辑删除可以理解为假删除,并不是真的将数据进行删除。假删除只是为了数据安全起见,在数据库中增添一个字段,我们可以默认这个字段为1时数据被删除,而字段值为0时数据被删除想象一下这样的业务场景,当一位公司职员离职,但是手续还没有办理,这时我们便可以设置逻辑删除,以保证其信息不会被立刻删除。我们电脑里的回收站正是利用了逻辑删除,我们点击删除的文件不会被立刻删除,而是放入回收站,等我们反悔时可以将其进行还原。在Mybat

    2022年6月1日
    44
  • idea2021 激活码(最新序列号破解)

    idea2021 激活码(最新序列号破解),https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月18日
    118
  • JavaScript Navigator

    JavaScript NavigatorNavigator对象包含的属性描述了正在使用的浏览器。可以使用这些属性进行平台专用的配置。虽然这个对象的名称是Netscape的Navigator浏览器,但其他实现了JavaScript的浏览器也支持这个对象。Navigator对象的实例是唯一的,可以用Window对象的navigator属性来引用它。测试用例

    2022年9月11日
    0
  • 2021pycharm激活码【在线破解激活】

    2021pycharm激活码【在线破解激活】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月17日
    42

发表回复

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

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