【MATLAB】多元线性回归分析regress,MATLAB代码

【数学建模】scatter画散点图、scatter3画三维散点图,mshgrid网格坐标,mesh画网格曲线图

Matlab篇----常用的回归分析Matlab命令(regress篇)

MATLAB数学建模(三):回归

语法

  1. b = regress(y,X)
  2. [b,bint] = regress(y,X)
  3. [b,bint,r] = regress(y,X)
  4. [b,bint,r,rint] = regress(y,X)
  5. [b,bint,r,rint,stats] = regress(y,X)

实例:

目标函数:y=Ax1^2+Bx1^2+Cx1+Dx2+Ex1*x2+F  (这是一个二次函数,两个变量,大写的字母是常数)

clc;clear;close all;

%% 导入数据
y=[7613.51  7850.91  8381.86  9142.81 10813.6 8631.43 8124.94 9429.79 10230.81 ... 
    10163.61 9737.56 8561.06 7781.82 7110.97]';
x1=[7666 7704 8148 8571 8679 7704 6471 5870 5289 3815 3335 2927 2758 2591]';
x2=[16.22 16.85 17.93 17.28 17.23 17 19 18.22 16.3 13.37 11.62 10.36 9.83 9.25]';
X=[ones(size(y)) x1.^2 x2.^2 x1 x2 x1.*x2];
%% 开始分析
[b,bint,r,rint,stats] = regress(y,X);
%b回归系数、bint回归系数的区间估计、r残差、rint置信区间、
%stats检验回归模型的统计量。有4个数值:判定系数R^2,F统计量观测值,检验p的值,误差方差的估计
%ifp小于0.001,则拟合有效
%% scatter可用于画散点图
scatter3(x1,x2,y,'filled') ;

%% 拟合,三维视图显示
hold on  %在刚刚那副散点图上接着画
x1fit = min(x1):100:max(x1);   %设置x1的数据间隔
x2fit = min(x2):1:max(x2);     %设置x2的数据间隔
[X1FIT,X2FIT] = meshgrid(x1fit,x2fit);    %返回二维网格平面的坐标
YFIT=b(1)+b(2)*X1FIT.^2+b(3)*X2FIT.^2+b(4)*X1FIT
     ... +b(5)*X2FIT+b(6)*X1FIT.*X2FIT;    %代入已经求得的参数,拟合函数式
mesh(X1FIT,X2FIT,YFIT)    %X1FIT,X2FIT是网格坐标矩阵,YFIT是网格点上的高度矩阵
view(10,10)  %改变角度观看已存在的三维图,第一个10表示方位角,第二个表示俯视角。
             %方位角相当于球坐标中的经度,俯视角相当于球坐标中的纬度
xlabel('x1') %设置X轴的名称
ylabel('x2') %设置y轴的名称
zlabel('y')  %设置z轴的名称

效果图:

【MATLAB】多元线性回归分析regress,MATLAB代码_第1张图片

【MATLAB】多元线性回归分析regress,MATLAB代码_第2张图片

【MATLAB】多元线性回归分析regress,MATLAB代码_第3张图片

你可能感兴趣的:(数模集训)