作业帮 > 综合 > 作业

求用MATLAB运行非线性回归结果的答案

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/29 17:23:18
求用MATLAB运行非线性回归结果的答案
拟合函数如图

t=0:1:14;
y=[125786 126743 127627 128453 129227 129988 130756 131448 132129 132802 133450 134091 134735 135404 136072];
clear
clc
t=0:1:14;
y=[125786 126743 127627 128453 129227 129988 130756 131448 132129 132802 133450 134091 134735 135404 136072];
% 先画图观察一下
plot(t,y),hold on
% 给出你的表达式,这里用a(1)代表a,a(2)代表b
fun=@(a,t)(a(1)./(1+(a(1)./125786-1)*exp(-a(2)*t)));
% 给出初值,初值的确定是很困难的,这里我试了好多次
a=[100,0.001];
% 回归分析
[beta,r,J]=nlinfit(t,y,fun,a);
%给出beta的置信区间
betaci=nlparci(beta,r,J,0.05);
beta,betaci
%将拟合值与原始值比较
yy=beta(1)./(1+(beta(1)./(125786)-1)*exp(-beta(2)*t));
plot(t,yy,'or'),legend('原值','预测值')
%给出交互式画面,其中可以输出剩余标准差,置信区间等
nlintool(t,y,fun,beta)
R=corrcoef(y,yy); %相关系数矩阵
Rsquare=R(1,2)^2  %R方

结果:beta =
   1.0e+09 *
  -2.038585555465525   0.000000000005874
betaci =
   1.0e+14 *
  -1.218031004888399   1.217990233177290
  -0.000000000000000   0.000000000000000
Rsquare =
   0.995253597950831
不过你的函数真的感觉不太好,从a,b参数的置信区间就可以看出来