【Matlab】多元线性回归
多元线性回归学习
一元线性回归
一个旧东西随着时间价格也在变动,数据如下:
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
---|---|---|---|---|---|---|---|---|---|
265 | 1942 | 1493 | 1086 | 766 | 539 | 485 | 291 | 224 | 202 |
绘图
clear all
clc
x=1:10;
y=[2650,1942,1493,1086,766,539,485,291,224,202];
for i=1:10
plot(x(i),y(i),'or');
hold on
end
xlabel('x');
ylabel('y');
由图可发现,x和y呈现指数关系,于是我们假设 z = ln y z=\ln y z=lny,记作 z i = ln y i z_i=\ln y_i zi=lnyi,重新绘图:
clear all
clc
x=1:10;
y=[2650,1942,1493,1086,766,539,485,291,224,202];
z=zeros(size(y));
N=length(y);
hold on
for i =1:N
z(i)=log(y(i));
plot(x(i),z(i),'ok');
end
xlabel('x');
ylabel('y');
分析发现现在变得更拟合了。各点基本处于一条直线上,可以认为
z
=
a
+
b
x
z=a+bx
z=a+bx
求参
clear all
clc
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)
返回结果:
可以得出:a=8.1671,b=-0.2984,即
z
=
8.1671
−
0.2984
x
z=8.1671-0.2984x
z=8.1671−0.2984x
多元线性回归
regress函数
%调用格式
[b,bint,r,rint,stats]=regress(y,x,alpha)
alpha为显著性水平,缺省设定为0.05, b表示为输出量, bint为回归系数估计值和他们的置信区间,r为残差, rint为置信区间, stats适用于检验回归模型的统计量。
案例如下:
x 1 x_1 x1 | 1.376 | 1.375 | 1.387 | 1.401 | 1.412 | 1.428 | 1.445 | 1.477 |
---|---|---|---|---|---|---|---|---|
x 2 x_2 x2 | 0.450 | 0.475 | 0.485 | 0.5 | 0.535 | 0.545 | 0.55 | 0.575 |
x 3 x_3 x3 | 2.17 | 2.554 | 2.676 | 2.713 | 2.823 | 3.088 | 3.122 | 3.262 |
x 4 x_4 x4 | 0.8922 | 1.161 | 0.5346 | 0.9589 | 1.0239 | 1.0499 | 1.1065 | 1.1387 |
y y y | 5.19 | 5.3 | 5.6 | 5.82 | 6 | 6.06 | 6.45 | 6.95 |
%开始多元回归
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.5,0.535,0.545,0.55,0.575];
x3=[2.170,2.554,2.676,2.713,2.823,3.088,3.122,3.262];
x4=[5.19,1.161,0.5346,0.9589,2.0239,1.0499,1.1065,1.1387];
y=[5.19,5.3,5.6,5.82,6,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'];
[b,bint,r,rint,stats]=regress(y,x)
根据b可以解得该函数关系式为:
y
=
−
20.5297
+
19.1269
x
1
+
8.0045
x
2
−
1.5867
x
3
−
0.1465
x
4
y=-20.5297+19.1269x_1+8.0045x_2-1.5867x_3 -0.1465x_4
y=−20.5297+19.1269x1+8.0045x2−1.5867x3−0.1465x4
matlab 文档非常有用
文档连接:点击这里
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)