如何用matlab线性回归分析

 我来答
就烦条0o
2016-05-04 · 知道合伙人软件行家
就烦条0o
知道合伙人软件行家
采纳数:33315 获赞数:46484
从事多年系统运维,喜欢编写各种小程序和脚本。

向TA提问 私信TA
展开全部
在matlab中regress()函数和polyfit()函数都可以进行回归分析。

(1)regress()函数主要用于线性回归,一元以及多元的。它可以提供更多的信息,残差之类的。

(2)polyfit()函数是利用多项式拟合。可以是线性也可以是非线性的。

regress()函数详解

[b,bint,r,rint,stats]=regress(y,X,alpha)

说明:b是线性方程的系数估计值,并且第一值表示常数,第二个值表示回归系数。bint是系数估计值的置信度为95%的置信区间,r表示残差,rint表示各残差的置信区间,stats是用于检验回归模型的统计量,有三个数值其中有表示回归的R2统计量和F以及显著性概率P值,alpha为置信度。

相关系数r^2越大,说明回归方程越显著;与F对应的概率P<alpha时候拒绝H0,回归模型成立。

y表示一个n-1的矩阵,是因变量的值,X是n-p矩阵,自变量x和一列具有相同行数,值是1的矩阵的组合。如:对含常数项的一元回归模型,可将X变为n-2矩阵,其中第一列全为1。

ONES(SIZE(A)) is the same size as A and all ones。

利用它实现X=[ones(size(x))x]

(2)polyfit()函数详解-------------摘自sina小雪儿博客

p=polyfit(x,y,n)

[p,s]= polyfit(x,y,n)

说明:x,y为数据点,n为多项式阶数,返回p为幂次从高到低的多项式系数向量p。x必须是单调的。矩阵s用于生成预测值的误差估计。(见下一函数polyval)

多项式曲线求值函数:polyval( )

调用格式: y=polyval(p,x)

[y,DELTA]=polyval(p,x,s)

说明:y=polyval(p,x)为返回对应自变量x在给定系数P的多项式的值。

[y,DELTA]=polyval(p,x,s) 使用polyfit函数的选项输出s得出误差估计Y
DELTA。它假设polyfit函数数据输入的误差是独立正态的,并且方差为常数。则Y DELTA将至少包含50%的预测值。
Hachhiiii
2018-03-31 · TA获得超过1477个赞
知道答主
回答量:5
采纳率:83%
帮助的人:850
展开全部

回归分析是处理两个及两个以上变量间线性依存关系的统计方法。可以通过软件Matlab实现。

在Matlab中,可以直接调用命令实现回归分析,

(1)[b,bint,r,rint,stats]=regress(y,x),其中b是回归方程中的参数估计值,bint是b的置信区间,r和rint分别表示残差及残差对应的置信区间。stats包含三个数字,分别是相关系数,F统计量及对应的概率p值。

(2)recplot(r,rint)作残差分析图。

(3)rstool(x,y)一种交互式方式的句柄命令。

例,现有多个样本的因变量和自变量的数据,下面我们利用Matlab,通过回归分析建立两者之间的回归方程。

1.% 一元回归分析

x=[1097  1284  1502  1394  1303  1555  1917  2051  2111  2286  2311  2003  2435  2625  2948  3, 55  3372];%自变量序列数据

y=[698  872  988  807  738  1025  1316  1539  1561  1765  1762  1960  1902  2013  2446  2736  2825];%因变量序列数据

X=[ones(size(x')),x'],pause    

[b,bint,r,rint,stats]=regress(y',X,0.05),pause%调用一元回归分析函数

rcoplot(r,rint)%画出在置信度区间下误差分布。

2.% 多元回归分析

% 输入各种自变量数据

x1=[5.5 2.5 8 3 3 2.9 8 9 4 6.5 5.5 5 6 5 3.5 8 6 4 7.5 7]';

x2=[31 55 67 50 38 71 30 56 42 73 60 44 50 39 55 70 40 50 62 59]';

x3=[10 8 12 7 8 12 12 5 8 5 11 12 6 10 10 6 11 11 9 9]';

x4=[8 6 9 16 15 17 8 10 4 16 7 12 6 4 4 14 6 8 13 11]';

%输入因变量数据

y=[79.3 200.1 163.1 200.1 146.0 177.7 30.9 291.9 160 339.4 159.6 86.3 237.5 107.2 155 201.4 100.2 135.8 223.3 195]';

X=[ones(size(x1)),x1,x2,x3,x4];

[b,bint,r,rint,stats]=regress(y,X)%回归分析

Q=r'*r

sigma=Q/18

rcoplot(r,rint);

3.%逐步回归

X1=[x1,x2,x3,x4];

stepwise(X1,y,[1,2,3])%逐步回归

% X2=[ones(size(x1)),x2,x3];

% X3=[ones(size(x1)),x1,x2,x3];

% X4=[ones(size(x1)),x2,x3,x4];

% [b1,b1int,r1,r1int,stats1]=regress(y,X2)

% [b2,b2int,r2,r2int,stats2]=regress(y,X3);

% [b3,b3int,r3,r3int,stats3]=regress(y,X4);

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式