MATLAB中给出了三种回归模型类:LinearModel class(线性回归模型类)、NonlinearModel class(非线性回归模型类)和GeneralizedLinearModel class(广义线性回归模型类)
一元线性回归
(1)数据的散点图
x = [];y = []; %输入x,y的数据
plot(x,y,'k.',...); %绘制散点图
xlabel('***');
ylabel('***'); %添加标签
(2)模型建立
建立y关于x的一元线性回归模型
(3)调用LinearModel 类的 fit 方法求解模型
md1 = LinearModel.fit(x,y)
(4)调用LinearModel 类的plot 方法绘制拟合效果图
figure;
md1.plot; %绘制模型拟合效果图
xlabel('***'); %给x轴加标签
ylabel('***'); %给y轴加标签
title('');
legend(''...); %加图例
(5)预测
给定自变量x的值,可以调用LinearModel 类对象里的predict 方法预测,计算因变量y的预测值。
xnew = [];
ynew = md1.predict(xnew)
(6)模型改进
模型改进通常包括两个方面:剔除模型中不显著项、剔除数据集中的异常点。数据集中的异常点是指远离数据集中心的观测点,又称离群点。通常情况下,学生化残差的绝对值大于2的数据点被认为是异常点。
Res = md1.Residuals; %查询残差值
Res_Stu = Res.Studentized; %学生化残差
id = find(abs(Res_Stu) > 2); %查找异常值序号
md2 = LinearModel.fit(x,y,'Exclude',id) %去除异常值,重新求解
一元非线性回归
步骤基本上和第一种相似,只有调用函数不一样。
fun = @(x) %编写匿名函数
x0 = []; %未知参数初值
nlm1 = NonLinearModel.fit(x,y,fun,x0); %模型求解
这就是今天学习内容,根据书本《MATLAB与数学建模》(谢中华)编写的书本内容学习。