MATLAB建立回归模型

终于考完数值分析和数理统计了,回来更新MATLAB
回归分析
在MATLAB的绘图里面其实有工具箱可以直接拟合数据,不过我们还是来看下代码简单拟合的方式。
1.一元线性回归
例如 有下列两组数据
x=1:10;
y=[2650,1942,1493,1086,766,539,485,291,224,202];
我们先用线性回归的思路,先画出数据的散点图

clear all
clc 
%做x和y的散点图%
x=1:10;
y=[2650,1942,1493,1086,766,539,485,291,224,202];
for i=1:10
plot(x(i),y(i),'ok');
hold on
end
xlabel('x');
ylabel('y');

我们可以从图中看出不是成线性的,而是近似和对数函数相似,所以我们使用对数函数进行拟合

x=1:10;
y=[2650,1942,1493,1086,766,539,485,291,224,202];
z=zeros(size(y));
N=length(y);
for i=1:N
z(i)=log(y(i));
plot(x(i),z(i),'ok');
hold on
end
xlabel('x');
ylabel('y');

实际运行之后可以看粗已经近似与一条直线,故我们再编写代码直接求出回归系数:`

x=1:10;
y=[2650,1942,1493,1086,766,539,485,291,224,202];
z=zeros(size(y));
N=length(y);
for i=1:N
z(i)=log(y(i));
end
 [p,s]=polyfit(x,z,1)

一元线性回归到这里结束
我们接下来看下多元线性回归

2.多元线性回归
在回归分析中,有两个或者两个以上的自变量,就称为多元回归。多元线性回归的基本原理和基本计算过程与一元线性回归相同。在MATLAB中使用函数regerss(),可以实现多元线性回归。调用格式为

[b,bint,r,rint,status]=regress(y,x,alpha)

例如有以下数据
x1=[1.376, 1.375, 1.387, 1.401, 1.412, 1.428, 1.445, 1.477];
x2=[0.450,0.475,0.485,0.500,0.535,0.545,0.550,0.575];
x3=[2.170,2.554,2.676,2.713,2.823,3.088,3.122,3.262];
x4=[0.8922, 1.1610,0.5346,0.9589, 1.0239, 1.0499,1.1065, 1.1387];
y=[5.19, 5.30,5.60,5.82,6.00,6.06,6.45,6.95];

这可以直接理解为一个矩阵方程x为系数,y为函数值,与正交二项式的线性拟合方式类似,MATLAB求解即可

clear all
clc 
x1=[1.376, 1.375, 1.387, 1.401, 1.412, 1.428, 1.445, 1.477];
x2=[0.450,0.475,0.485,0.500,0.535,0.545,0.550,0.575];
x3=[2.170,2.554,2.676,2.713,2.823,3.088,3.122,3.262];
x4=[0.8922, 1.1610,0.5346,0.9589, 1.0239, 1.0499,1.1065, 1.1387];
y=[5.19, 5.30,5.60,5.82,6.00,6.06,6.45,6.95];
save data x1 x2 x3 x4 y
load data    %取出数据
Y=[y'];
x=[ones(size(x1')),x1',x2',x3',x4'];
% x=[ones(size(x1')),x1',x2',x3',x4'];
[b,bint,r,rint,stats]=regress(Y,x)

写到这里,谢谢观看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值