如何用matlab线性回归分析?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用matlab线性回归分析?相关的知识,希望对你有一定的参考价值。

在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%的预测值。
参考技术A

回归分析是处理两个及两个以上变量间线性依存关系的统计方法。可以通过软件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);

参考技术B 利用matlab的regress()多元线性回归函数可以做线性回归。
实现代码:
x=[。。。]
y =[。。。]
[b,bint,r,rint,stats]=regress(y,x);

式中:b——参数估计值;bint——b的置信区间;r——残差向量y-xb;rint——r的置信区间;stats——1×3检验统计量,第一值是回归方程的置信度(相关系数),第二值是F统计量值,第二值是与F统计量相应的p值;y——因变量数据n×1向量;X——自变量数据n×m向量
参考技术C X=[1 1 4 6 8 11 14 17 21]'
Y=[2.49 3.30 3.68 12.20 27.04 61.10 108.80 170.90 275.50]'
X=[ones(9,1), X]
[b,bint,r,rint,stats]= regress(Y,X)

输出向量b,bint为回归系数估计值和它们的置信区间,r,rint为残差及其置信区间,stats是用于检验回归模型的统计量,有三个数值,第一个是R2,其中R是相关系数,第二个是F统计量值,第三个是与统计量F对应的概率P,当P<α时拒绝H0,回归模型成立。
参考技术D 第一次回答可获2分,答案被采纳可获得悬赏分X=[1 1 4 6 8 11 14 17 21]'
Y=[2.49 3.30 3.68 12.20 27.04 61.10 108.80 170.90 275.50]'
X=[ones(9,1), X]
[b,bint,r,rint,stats]= regress(Y,X)

输出向量b,bint为回归系数估计值和它们的置信区间,r,rint为残差及其置信区间,stats是用于检验回归模型的统计量,有三个数值,第一个是R2,其中R是相关系数,第二个是F统计量值,第三个是与统计量F对应的概率P,当P<α时拒绝H0,回归模型成立。
和额外20分奖励。

如何用spss做对数线性(Log-Linear)回归分析

小弟想做多种因素对房价的影响,目前的因变量是房价,自变量有六个不同变量,目前看别人的论文有用的是对数线性模型的,也就是lny=a+B1X1+B2X2+...+B6X6+c,这里想请问,是不是把房价y求完对数以后的结果带入上述方程就可以了?如果不是这样,用spss怎样操作才能得到结果?谢谢!

这个不叫对数线性模型,真正的对数线性是用来分析分类变量影响因素的,你说的这种模型是对非线性回归分析模型进行对数变换以得到线性的模型,它的模型形式与对数有关,你要看清楚你说的“别人的论文”是何种情况,因为对数变换线性化的情况涉及到“半对数模型”和“双对数模型”两种。

在SPSS中应该是使用计算功能计算出一个新的对数变换以后的变量,然后用线性回归分析对变换后的变量进行估计得到结果,注意对数变换以后估计出来的参数它的经济意义。
参考技术A 是这的,但是要注意其应用条件

以上是关于如何用matlab线性回归分析?的主要内容,如果未能解决你的问题,请参考以下文章

在多元线性回归中,如何用matlab求得各个变量的T统计值及其p值?

如何用Python进行线性回归以及误差分析

如何用Python进行线性回归以及误差分析

如何用Python进行线性回归以及误差分析

如何用spss进行非线性回归模型操作步骤

如何用R语言做线性相关回归分析