matlab做回归拟合

matlab做回归拟合

先放一张效果图
在这里插入图片描述

先用散点图打印x,y
hold on
用了polyfit(x,y,n),回归拟合函数
n代表阶数,至于阶数怎么确定,我看着有的说是阶数越高越接近,有的说是多次拟合选一个最好的
求出来拟合函数的系数矩阵,就要用polyval(ans,x),求出作图的值
ans就等于值了
最后plot(x,ans),就可以做出来了

>> x=0.1:0.01:0.18;x=[x,0.2,0.21,0.23]';
>>y=[42,41.5,45,45.5,45,47.5,49,55,50,55,55.5,60.5]';
>>plot(x,y,"*")
>> hold on
>> polyfit(x,y,2)

ans =

  157.9276   88.9683   31.0015

>> polyval(ans,x)

ans =

   41.4776
   42.6990
   43.9519
   45.2364
   46.5525
   47.9001
   49.2794
   50.6902
   52.1327
   55.1123
   56.6495
   59.8186

>> plot(x,ans)
>> 

多元线性回归

regress(y,x)

[b,bint,r,rint,stats]=regress(y,x)
[…]=regress(y,x,alpha)
因变量y和自变量x进行多元线性回归
b是回归系数的最小二乘估计
bint回归系数 b的95%置信度 的置信区间
r残差
rint为r的残差
stats检测统计量,第一值为回归方程置信度,第二值为F统计量,第三值为与F统计量对应的p值。如果F很大p很小,说明回归系数不为0
alpha是置信水平
注意,计算stats是x矩阵要包含一个全是1的列

>> a=ones(length(x),1)

a =

     1
     1
     1
     1
     1
     1
     1
     1
     1
     1
     1
     1
>> x=[x,a]

x =

    0.1000    1.0000
    0.1100    1.0000
    0.1200    1.0000
    0.1300    1.0000
    0.1400    1.0000
    0.1500    1.0000
    0.1600    1.0000
    0.1700    1.0000
    0.1800    1.0000
    0.2000    1.0000
    0.2100    1.0000
    0.2300    1.0000
>> [b,bint,r,rint,stats]=regress(y,x)

b =
%系数估计值
  140.6194
   27.0269


bint =
%系数置信边界的上限和下限
  111.7842  169.4546
   22.3226   31.7313


r =
%残差
    0.9111
   -0.9951
    1.0987
    0.1925
   -1.7136
   -0.6198
   -0.5260
    4.0678
   -2.3384
   -0.1508
   -1.0570
    1.1306


rint =
%诊断离群值的区间
   -2.6237    4.4459
   -4.6583    2.6682
   -2.6591    4.8566
   -3.7345    4.1196
   -5.4843    2.0570
   -4.6102    3.3705
   -4.5319    3.4799
    1.4853    6.6503
   -5.8953    1.2184
   -3.9641    3.6625
   -4.6667    2.5527
   -2.1235    4.3848


stats =

    0.9219  118.0670    0.0000    3.1095
%stats包含4个参数的向量,分别是R^2,F统计量,显著性P值,模型误差的方差
%R是衡量y与x的相关程度的指标,称为相关系数
%R越大,x与y关系越密切.通常R大于0.9才认为相关关系成立.
%F是一统计指标
%p是与F对应的概率,当p<0.05,回归模型成立.
>> rcoplot(r,rint)

在这里插入图片描述

>> x=x(:,1)

x =

    0.1000
    0.1100
    0.1200
    0.1300
    0.1400
    0.1500
    0.1600
    0.1700
    0.1800
    0.2000
    0.2100
    0.2300


>> polyval(b,x)

ans =

   41.0889
   42.4951
   43.9013
   45.3075
   46.7136
   48.1198
   49.5260
   50.9322
   52.3384
   55.1508
   56.5570
   59.3694

>> plot(x,ans)
>> hold on
>> plot(x,y,"*")

![在这里插入图片描述](https://img-blog.csdnimg.cn/e568c6d615214da1a3e39ee902b4d102.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA56We5aiBJg==,size_20,color_FFFFFF,t_70,g_se,x_16

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值