regress
regress
函数:regress
是 MATLAB 中用于进行普通最小二乘线性回归的函数,用于拟合具有线性关系的数据。该函数的语法为:
[beta, sigma, r, rint, stats] = regress(Y, X);
clc,clear all;
% 数据准备
data=xlsread("副本赛题数据.xlsx");
Y = data(:,15); % 因变量(高考总分)
zk_zf = data(:,9); % 自变量(中考总分)
schtype = data(:,3); % 自变量(学校类型)
% 设置回归模型
X = [zk_zf, schtype]; % 自变量矩阵
X = [ones(size(X, 1), 1) X]; % 添加常数项列
% 执行回归分析
[beta, sigma, r, rint, stats] = regress(Y, X);
% Y 是因变量的数据向量或矩阵。
% X 是自变量的数据矩阵,每一列对应一个自变量。
% beta 是估计的回归系数向量。
% sigma 是估计的误差标准差。
% r 是相关系数矩阵。
% rint 是回归系数的置信区间。
% stats 是统计信息结构体,包含了回归模型的各种统计值。
% 输出回归系数
intercept = beta(1); % 常数项系数
coef_zk_zf = beta(2); % zk_zf的系数
coef_schtype = beta(3); % schtype的系数
% 打印回归结果
fprintf('Y = %.3f + %.3f * zk_zf + %.3f * schtype\n', intercept, coef_zk_zf, coef_schtype)
现有一个excel表格名为副本赛题数据,我们要拟合一个因变量和两个自变量关系,可先构建自变量矩阵,然后使用regress拟合,这里 intercept, coef_zk_zf, coef_schtype即变量
最小二乘法原理
已上面表格数据为例,根据学校类型和中考成绩来预测高考成绩
polyfit
polyfit
函数:polyfit
函数也是 MATLAB 中的函数,用于拟合多项式回归模型。
clc,clear all;
% 假设你有一组离散数据的横坐标X和纵坐标Y
X = [1 2 3 4 5];
Y = [5 9 6 8 10];
% 进行二次曲线拟合
degree = 2; % 二次多项式
coefficients = polyfit(X, Y, degree);
% 构造二次多项式函数
fun = @(x) polyval(coefficients, x);
% 生成拟合曲线的横坐标
x_fit = linspace(min(X), max(X), 100);
% 计算拟合曲线的纵坐标
y_fit = fun(x_fit);
% 绘制原始数据和拟合曲线
figure;
plot(X, Y, 'bo-', 'LineWidth', 2); % 原始数据
hold on;
plot(x_fit, y_fit, 'r-', 'LineWidth', 2); % 拟合曲线
legend('原始数据', '拟合曲线');
xlabel('X');
ylabel('Y');
title('曲线拟合');
使用polyfit进行二次曲线拟合,然后使用 polyval计算预测值,最后画图
polyval
函数:polyval
用于计算多项式的值,可以在给定自变量的情况下计算多项式回归模型的预测值。该函数的语法为:y_pred = polyval(p, x);
p
是一个向量,包含多项式回归模型的系数。x
是自变量的数据向量。