MATLAB 回归分析

26 篇文章 0 订阅
20 篇文章 11 订阅

✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。
🍎个人主页:小嗷犬的个人主页
🍊个人网站:小嗷犬的技术小站
🥭个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。



一元线性回归与多项式回归

MATLAB 提供了 polyfit 函数来进行一元回归,包括线性回归和多项式回归。

polyfit 函数的语法为:

p = polyfit(x,y,n)

其中,xy 分别为自变量和因变量,n 为多项式的阶数,p 为拟合多项式的系数。当 n 为 1 时,为线性回归。

使用 polyval 函数可以计算拟合多项式的值:

y = polyval(p,x)

其中,p 为拟合多项式的系数,x 为自变量,y 为因变量。

使用线性回归拟合美国人口数据:

年份17901800181018201830184018501860187018801890
人口/百万3.95.37.29.612.917.123.231.438.650.262.9
年份19001910192019301940195019601970198019902000
人口/百万76.292.2106.5123.2132.2151.3179.3203.2226.5249.6281.4
x = 1790:10:2000;
y = [3.9 5.3 7.2 9.6 12.9 17.1 23.2 31.4 38.6 50.2 62.9 76.2 92.2 106.5 123.2 132.2 151.3 179.3 203.2 226.5 249.6 281.4];
p = polyfit(x,y,1);
y_hat = polyval(p,x);
plot(x,y,'o',x,y_hat,'-'),grid on,legend('原始数据','预测结果'),xlabel('年份'),ylabel('人口/百万')

图1

可以看出美国人口增长趋势不是线性的,使用线性回归拟合的结果并不理想。

我们换用 2 次多项式进行拟合:

x = 1790:10:2000;
y = [3.9 5.3 7.2 9.6 12.9 17.1 23.2 31.4 38.6 50.2 62.9 76.2 92.2 106.5 123.2 132.2 151.3 179.3 203.2 226.5 249.6 281.4];
p = polyfit(x,y,2);
y_hat = polyval(p,x);
plot(x,y,'o',x,y_hat,'-'),grid on,legend('原始数据','预测结果'),xlabel('年份'),ylabel('人口/百万')

图2

可以看出,使用 2 次多项式拟合的结果就要比一次多项式拟合的结果好很多。

根据泰勒公式,我们可以使用高阶多项式来拟合任意的函数,无论函数图像有多么复杂。


多元线性回归

MATLAB 提供了 regress 函数来进行多元线性回归。

regress 函数的语法为:

b = regress(y,X)

其中,y 为因变量,X 为自变量矩阵,b 为回归系数。如果需要拟合包括常数项的多元线性回归模型,需要在自变量矩阵 X 中添加一列全为 1 的列向量。

加载 carsmall 数据集。使用加速度 Acceleration、和排量 Displacement 来预测每加仑里程数 MPG。

load carsmall
x1 = Acceleration;
x2 = Displacement;
X = [x1 x2 x1.*x2 ones(size(x1))];  % 添加交互效应项和常数项
y = MPG;
b = regress(y,X)

输出拟合系数:

b =
    0.3821
   -0.0160
   -0.0039
   32.0143

绘制拟合曲面:

scatter3(x1,x2,y,'filled')
hold on
x1fit = min(x1):(max(x1)-min(x1))/25:max(x1);
x2fit = min(x2):(max(x2)-min(x2))/25:max(x2);
[X1FIT,X2FIT] = meshgrid(x1fit,x2fit);
YFIT = b(1)*X1FIT + b(2)*X2FIT + b(3)*X1FIT.*X2FIT + b(4);
mesh(X1FIT,X2FIT,YFIT)
xlabel('Acceleration')
ylabel('Displacement')
zlabel('MPG')
hold off

图3


非线性回归

MATLAB 提供了 nlinfit 函数来进行多元非线性回归。

nlinfit 函数的语法为:

beta = nlinfit(X,Y,modelfun,beta0)

其中,X 为自变量矩阵,Y 为因变量,modelfun 为模型函数,beta0 为初始值,beta 为回归函数参数。

MATLAB 阻滞增长模型

  • 11
    点赞
  • 98
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小嗷犬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值