美文网首页
C++最小二乘计算线性回归方程

C++最小二乘计算线性回归方程

作者: 无聊的CairBin | 来源:发表于2020-04-29 12:13 被阅读0次

介绍

用来理解一下数学思路和练习一下代码。即兴而写的,所以没写注释。


timg2.jpg

代码

#include <iostream>
// #include "Windows.h"

double sum_square_x = 0;
double sum_x = 0;
double sum_y = 0;
double sum_xy = 0;
int n = 0;
double ave_x = 0;
double ave_y = 0;
double b_ba = 0;
double a_ba = 0;

using namespace std;

void InputAndSum()
{
    cout << "请输入n的值" << endl;
    cin >> n;
    cout << " " << endl;
    double data_x = 0;
    double data_y = 0;
    int i = 1;
    while (i <= n)
    {
        cout << "请输入第" << i << "个数据的x值" << endl;
        cin >> data_x;
        cout << " " << endl;
        cout << "请输入第" << i << "个数据的y值" << endl;
        cin >> data_y;
        cout << " " << endl;

        sum_x += data_x;
        sum_y += data_y;
        sum_xy += (data_x * data_y);
        sum_square_x += (data_x * data_x);
        
        i++;
    }

}

double Average(double a)
{
    double ave = a / n;
    return ave;
}

double B_ba(double calc1,double calc2)
{
    double square_ave_x = calc1 * calc1;
    double calc3;
    calc3 = (sum_xy - n * calc1 * calc2) / (sum_square_x - n * square_ave_x);
    return calc3;
}

void A_ba()
{
    a_ba = ave_y - b_ba * ave_x;
}

int main()
{
    InputAndSum();
    ave_x = Average(sum_x);
    ave_y = Average(sum_y);
    b_ba = B_ba(ave_x,ave_y);
    A_ba();
    cout << "---------------------------------" << endl;
    cout << "---------------------------------" << endl;
    cout << "n的值为: " << n << endl;
    cout << "各x的和为: " << sum_x << endl;
    cout << "各y的和为: " << sum_y << endl;
    cout << "各个xy乘积的求和为: " << sum_xy << endl;
    cout << "各个x平方的求和为: " << sum_xy << endl;
    cout << "x的均值为: " << ave_x << endl;
    cout << "y的均值为: " << ave_y << endl;
    cout << "a(ba)为: " << a_ba << endl;
    cout << "b(ba)为: " << b_ba << endl;
    cout << "样本点中心为:(" << ave_x << "," << ave_y << ")" << endl;
    cout << "回归直线方程为  y = " << b_ba << "x + " << "(" << a_ba << ")" << endl;
    cout << "---------------------------------" << endl;
    cout << "---------------------------------" << endl;
    //system("pause");

}

相关文章

  • C++最小二乘计算线性回归方程

    介绍 用来理解一下数学思路和练习一下代码。即兴而写的,所以没写注释。 代码

  • 矩阵: QR分解 && 最小二乘问题求解

    最小二乘问题分为线性最小二乘问题和非线性最小二乘问题;非线性最小二乘问题求解方法有高斯牛顿法,Levenberg-...

  • 2. 线性回归与逻辑回归

    1. 什么是线性回归? 线性回归是利用线性回归方程的最小二乘函数对一个或多个自变量和因变量之间的关系进行建模的方法...

  • 简单线性回归——置信区间

    简单线性回归: 在统计学中,线性回归是利用称为线性回归方程的最小二乘函数对一个或多个自变量和因变量之间关系进行建模...

  • 快速掌握简单线性回归:从理论到实践

    在统计学中,线性回归是利用称为线性回归方程的最小二乘函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。...

  • 线性代数与数值方法

    主要分以下几个方面进行说明: 一、矩阵分解 二、线性最小二乘 三、非线性最小二乘 四、直接稀疏矩阵方法 五、迭代方...

  • ceres solver 01 入门小例子

    1. 基本介绍 Ceres Solver是用来解决非线性最小二乘问题的库。 非线性最小二乘问题用公式表达如下:其中...

  • 线性最小二乘和非线性最小二乘

    本文基于下面的博客,结合自己第一次看的时候的一些问题,重新梳理总结一下https://blog.csdn.net/...

  • 非线性最小二乘法

    很多问题最终归结为一个最小二乘问题,求解最小二乘的方法也很多。 内容来自Gauss-Newton非线性最小二乘算法...

  • 岭回归、前向逐步回归

    线性回归的局限性 线性回归是利用已有观测样本的自变量和因变量之间的线性关系,建立回归方程。 通常采用最小二乘法求解...

网友评论

      本文标题:C++最小二乘计算线性回归方程

      本文链接:https://www.haomeiwen.com/subject/whegwhtx.html