多元线性回归最小二乘法c语言,线性回归,最小二乘法 C语言实现

采用线性回归的方式,Y=bx+a,求出系数

0eba9d11b73bd8f9634f6ed6be1261d9.png

#include 

#include 

int main()

{

//float x[6]={0.0,1.0,2.0,3.0,4.0,5.0};

//float y[6]={1.1,1.9,3.1,3.9,4.4,4.9};

/*float x[6]={0.0,1.0,2.0,3.0,4.0,5.0};

float y[6]={0.0,1.0,2.0,3.0,4.0,5.0};*/

float x[6]={0.0,1.0,2.0,3.0,4.0,5.0};

float y[6]={1.0,1.0,1.0,1.0,1.0,1.0};

float a,b,mxy,xx,yy,x2,x22;

int i;

a=b=mxy=xx=yy=x2=x22=0.0;

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

{

mxy=6.0*x[i]*y[i]+mxy;

xx=1.0*x[i]+xx;

yy=1.0*y[i]+yy;

x2=1.0*x[i]*x[i]*6.0+x2;

x22=1.0*x[i]+x22;

}

b=1.0*(mxy-xx*yy)/(x2-x22*x22);

a=1.0*yy/6.0-b*xx/6.0;

printf("Y=%0.2fx+%0.2f\n",b,a);

system("pause");

return 0;

}

Y=0.00x+1.00

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一元线性最小二乘法是一种常用的回归分析方法,用于拟合一条直线来描述两个变量之间的关系。下面是一个简单的C语言程序示例,用于实现一元线性最小二乘法: ```c #include <stdio.h> // 定义结构体存储数据点 typedef struct { double x; double y; } DataPoint; // 计算一元线性最小二乘法拟合直线的斜率和截距 void linearRegression(DataPoint data[], int n, double *slope, double *intercept) { double sumX = 0, sumY = 0, sumXY = 0, sumXX = 0; // 计算各项累加和 for (int i = 0; i < n; i++) { sumX += data[i].x; sumY += data[i].y; sumXY += data[i].x * data[i].y; sumXX += data[i].x * data[i].x; } // 计算斜率和截距 *slope = (n * sumXY - sumX * sumY) / (n * sumXX - sumX * sumX); *intercept = (sumY - *slope * sumX) / n; } int main() { // 定义数据点数组 DataPoint data[] = {{1, 2}, {2, 3}, {3, 4}, {4, 5}, {5, 6}}; int n = sizeof(data) / sizeof(data); // 计算拟合直线的斜率和截距 double slope, intercept; linearRegression(data, n, &slope, &intercept); // 输出结果 printf("拟合直线方程为:y = %.2fx + %.2f\n", slope, intercept); return 0; } ``` 这个程序通过定义一个结构体`DataPoint`来存储数据点的x和y值。`linearRegression`函数用于计算一元线性最小二乘法的斜率和截距,通过传入数据点数组和数据点个数,计算得到拟合直线的斜率和截距。最后在`main`函数中调用`linearRegression`函数,并输出拟合直线的方程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值