贝叶斯一元线性回归和经典一元线性回归的 matlab代码
时间: 2024-05-20 07:08:43 浏览: 109
MATLAB源码集锦-一元线性回归代码
5星 · 资源好评率100%
贝叶斯一元线性回归和经典一元线性回归都是用于分析两个变量之间线性关系的方法。在 matlab 中,可以使用以下代码实现这两种回归分析:
经典一元线性回归:
```matlab
x = [1 2 3 4 5]; % 自变量
y = [2.5 3.7 4.5 5.5 6.2]; % 因变量
b = x\y; % 计算斜率
a = mean(y) - b*mean(x); % 计算截距
yfit = a + b*x; % 计算拟合值
plot(x,y,'o',x,yfit,'-'); % 画出原始数据和拟合曲线
xlabel('x'); ylabel('y'); % 添加坐标轴标签
```
贝叶斯一元线性回归:
```matlab
x = [1 2 3 4 5]; % 自变量
y = [2.5 3.7 4.5 5.5 6.2]; % 因变量
sigma = 1; % 假设噪声方差为1
N = length(y); % 数据点数量
A = [ones(N,1) x']; % 构造设计矩阵
mu0 = [0;0]; Sigma0 = diag([1e-6,1e-6]); % 假设先验分布为正态分布
Sigma = inv(inv(Sigma0) + (1/sigma^2)*A'*A); % 计算后验分布的协方差矩阵
mu = Sigma*(inv(Sigma0)*mu0 + (1/sigma^2)*A'*y'); % 计算后验分布的均值向量
b = mu(2); a = mu(1); % 取后验分布的均值向量的第一、二个分量作为斜率和截距
yfit = a + b*x; % 计算拟合值
plot(x,y,'o',x,yfit,'-'); % 画出原始数据和拟合曲线
xlabel('x'); ylabel('y'); % 添加坐标轴标签
```
阅读全文