zoukankan      html  css  js  c++  java
  • 回归直线方程

    回归直线方程

    线性回归方程的公式

    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数据的均值)

     

  • 相关阅读:
    【科普】.NET 泛型
    吐槽,青岛科技大学真他妈操蛋
    c# 数组和集合精讲
    c# System.Text.Json 精讲
    .NET 5的System.Text.Json的JsonDocument类讲解
    c#中Array,ArrayList 与List<T>的区别、共性与转换
    代码是怎么运行的?
    .NET6使用DOCFX根据注释自动生成开发文档
    spring通过注解注册bean的方式+spring生命周期
    莫比乌斯反演
  • 原文地址:https://www.cnblogs.com/guopengfei/p/4745516.html
Copyright © 2011-2022 走看看