最小二乘法求一元线性回归方程并画出该回归方程图像 matlab代码
时间: 2023-10-24 13:24:06 浏览: 108
假设我们有一组数据 $(x_1, y_1), (x_2, y_2),..., (x_n, y_n)$,我们要用最小二乘法求解一元线性回归方程 $y = kx + b$,其中 $k$ 为斜率,$b$ 为截距。
首先,我们根据最小二乘法的原理,可以得到:
$$\sum_{i=1}^{n}(y_i - kx_i - b)^2$$
要使上式最小,我们需要对 $k$ 和 $b$ 分别求偏导数,并令偏导数为0,解出 $k$ 和 $b$ 的值。
具体的推导过程在这里不再赘述,直接给出最终的计算公式:
$$k = \frac{n\sum_{i=1}^{n}x_iy_i - \sum_{i=1}^{n}x_i\sum_{i=1}^{n}y_i}{n\sum_{i=1}^{n}x_i^2 - (\sum_{i=1}^{n}x_i)^2}$$
$$b = \frac{\sum_{i=1}^{n}y_i - k\sum_{i=1}^{n}x_i}{n}$$
下面是 MATLAB 代码实现:
```matlab
% 输入数据
x = [1 2 3 4 5];
y = [1.2 1.9 3.2 3.8 5.1];
% 计算斜率k和截距b
n = length(x);
k = (n*sum(x.*y) - sum(x)*sum(y)) / (n*sum(x.^2) - sum(x)^2);
b = (sum(y) - k*sum(x)) / n;
% 绘制回归方程图像
plot(x, y, 'o');
hold on;
x_fit = linspace(min(x), max(x), 1000);
y_fit = k*x_fit + b;
plot(x_fit, y_fit);
xlabel('x');
ylabel('y');
title(['y = ' num2str(k) 'x + ' num2str(b)]);
```
这段代码会绘制出数据散点图和回归方程图像,标题上会显示出回归方程的具体形式。
阅读全文