多元线性回归模型最小二乘法以及RMSE计算和预测结果与实际值的散点图matlab代码
时间: 2024-03-08 13:48:23 浏览: 36
下面是多元线性回归模型最小二乘法以及RMSE计算和预测结果与实际值的散点图Matlab代码:
```matlab
% 假设有3个自变量和1个因变量
x1 = [1, 2, 3, 4, 5]';
x2 = [2, 3, 4, 5, 6]';
x3 = [3, 4, 5, 6, 7]';
y = [6, 7, 9, 10, 12]';
% 构建设计矩阵X
X = [ones(5,1), x1, x2, x3];
% 计算模型参数beta
beta = (X' * X) \ X' * y;
% 计算预测值和实际值的RMSE
y_pred = X * beta;
rmse = sqrt(mean((y - y_pred).^2));
% 绘制预测值和实际值的散点图
scatter(y, y_pred);
hold on;
plot(y, y);
xlabel('Actual Y');
ylabel('Predicted Y');
title('Scatter Plot of Predicted Y and Actual Y');
```
需要注意的是,这里的设计矩阵X中第一列是全1向量,是为了计算截距项而添加的。在实际应用中,可能需要对自变量进行标准化处理,以防止不同变量的量纲差异对模型参数产生影响。
相关问题
多元线性回归模型最小二乘法以及RMSE计算matlab代码
以下是多元线性回归模型最小二乘法以及 RMSE 计算的 MATLAB 代码:
```matlab
% 输入数据
X = [ones(size(x1)), x1, x2, x3, ...]; % 自变量矩阵,第一列为常数列,x1、x2、x3、...分别为其他自变量
Y = y; % 因变量向量
% 最小二乘法求解
beta = inv(X' * X) * X' * Y; % beta为回归系数向量
% 预测值
y_pred = X * beta;
% RMSE计算
rmse = sqrt(mean((Y - y_pred).^2));
% 输出结果
disp('回归系数:');
disp(beta);
disp('RMSE:');
disp(rmse);
```
其中,`x1`、`x2`、`x3`、...为自变量向量,`y`为因变量向量。`beta`为回归系数向量,表示各自变量对因变量的影响程度。`y_pred`为预测值向量,`rmse`为 RMSE 值,表示模型拟合程度的好坏。
构建回归lasso模型以及RMSE计算和预测结果与实际值的散点图matlab代码
以下是构建回归lasso模型、计算RMSE以及绘制预测结果与实际值散点图的 MATLAB 代码示例:
```matlab
% 加载数据
data = load('data.mat');
X = data.X;
y = data.y;
% 将数据集分为训练集和测试集
train_ratio = 0.8;
train_size = floor(train_ratio * size(X, 1));
X_train = X(1:train_size, :);
y_train = y(1:train_size);
X_test = X(train_size+1:end, :);
y_test = y(train_size+1:end);
% 构建回归lasso模型
[B, FitInfo] = lasso(X_train, y_train, 'CV', 5);
% 选择最优的lambda
idxLambdaMinMSE = FitInfo.IndexMinMSE;
lambda = FitInfo.Lambda(idxLambdaMinMSE);
% 预测测试集结果
y_pred = X_test * B(:, idxLambdaMinMSE) + FitInfo.Intercept(idxLambdaMinMSE);
% 计算RMSE
rmse = sqrt(mean((y_pred - y_test).^2));
% 绘制预测结果与实际值散点图
scatter(y_test, y_pred);
hold on;
plot(y_test, y_test, 'r');
xlabel('实际值');
ylabel('预测值');
title(sprintf('Lasso回归预测结果 (RMSE=%.2f)', rmse));
```
其中,`data.mat` 是包含训练数据和目标变量的 `.mat` 文件,`X` 是训练数据矩阵,`y` 是目标变量向量。`train_ratio` 可以调整训练集和测试集的划分比例。在代码中,使用 5 折交叉验证来选择最优的超参数 `lambda`。最后,使用 `scatter` 函数绘制预测结果与实际值的散点图,并在图中标出 RMSE。