首页 > 编程知识 正文

matlab中求解非线性回归的函数,matlab非线性方程求解

时间:2023-05-05 11:20:51 阅读:261523 作者:2064

每次比赛都需要查一下,这次直接总结到自己的博客中。

 

 

以这个为例子:

2.线性方程的相关计算 x=[1,2,3,4,5]';%参数矩阵X=[ones(5,1),x];%产生一个5行一列的矩阵,后接x矩阵Y=[3.95,5.23,7.6,9.48,11.89]';[b,bint,r,rint,stats]=regress(Y,X)%b为方程相关系数%r表示残差%rint表示置信区间%stats适用于检验回归模型的统计量

 

得到

b = 1.5910 2.0130bint = 0.4482 2.7338 1.6684 2.3576r = 0.3460 -0.3870 -0.0300 -0.1630 0.2340rint = -0.0946 0.7866 -1.3318 0.5578 -1.6413 1.5813 -1.5888 1.2628 -0.6578 1.1258stats = 0.9914 345.6401 0.0003 0.1172

 

stats计算的结果,分别表示复相关系数r^2=0.9914,检验回归方差显著性的统计量F=345.6401,对应所得F统计量的概率P=0.003,估计误差方差=0.1172。

r^2越接近1,回归效果越显著;p<0.05表明方程成立。

 

rcoplot(r,rint)%残差图制作,红色表示异常点(不经过x=0)

  

 

 

预测及作图

z=b(1)+b(2)*xplot(x,Y,'k+',x,z,'r')

  

z = 3.6040 5.6170 7.6300 9.6430 11.6560

  

 

  

3.非线性方程的相关计算 x=[1,2,3,4,5]';%参数矩阵,并转置y=[5.49,15.13,40.98,109.20,296.96]';beta0=[1.9635 1.02097]';%待定参数的初始值[beta,r,J]=nlinfit(x,y,@modelfun,beta0);%非线性方程回归命令beta,r,J

  

创建modelfunc.m函数

function yhat=modelfun(beta,x)%UNTITLED Summary of this function goes here% Detailed explanation goes hereyhat=beta(1)*exp(beta(2)*x);end

  

当然对于函数的建立也可以直接在主代码中使用函数

x=[1,2,3,4,5]';%参数矩阵y=[5.49,15.13,40.98,109.20,296.96]';beta0=[1.9635 1.02097]';%待定参数的初始值modelfu=inline('beta(1)*exp(beta(2)*x)','beta','x');[beta,r,J]=nlinfit(x,y,modelfu,beta0);%非线性方程回归命令beta,r,J

  

 

beta = 2.0389 0.9962r = -0.0311 0.1792 0.4944 -0.4322 0.0837J = 1.0e+03 * 0.0027 0.0055 0.0073 0.0299 0.0199 0.1215 0.0538 0.4385 0.1456 1.4844

  

beta为估计出的回归系数    r表示残差    J表示Jacobian矩阵     modelfun:匿名函数(内联函数)  beta0表示回归系数的初值

 

待定参数的初始值

beta0的计算需要代入两组x,y的值进行计算,这样有助于MATLAB快速确定计算范围

 

预测和预测误差估计

[Y,DELTA]=nlpredci('modelfun', x,beta,r,J)

  

Y = 5.5211 14.9508 40.4856 109.6322 296.8763DELTA = 0.1977 0.3981 0.7093 0.9588 1.2499

  

获取 x 处的预测值 Y 及预测值的显著性为 1-alpha 的置信区间 Y±DELTA

 

作图

plot(x,y,'*',x,Y,'-or')

  

 

 

 

 

 

转载于:https://www.cnblogs.com/Mayfly-nymph/p/10539106.html

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。