• 大小: 48KB
    文件类型: .m
    金币: 2
    下载: 1 次
    发布日期: 2021-07-14
  • 语言: Matlab
  • 标签: matlab  

资源简介

最全的matlab非线性回归代码,一键操作,有详细的注解

资源截图

代码片段和文件信息

%非线性回归
%一个自变量的形式
%指数模型(I)线性回归
x=[0.5 1.5 2.5 3.5 4.5 5.5 6.5 7.5 8.5 9.5 10.5 11.5 12.5 13.5 14.5 15.5];
y=[26300 25100 19900 15500 11500 9800 5200 4600 3200 2300 1700 1200 900 700 600 500];
plot(xy‘r.‘);                             %绘制散点图
xlabel(‘Distance‘);                         %横轴标签(到城市中心的距离)
ylabel(‘Average density‘);                  %纵轴标签(人口平均密度)
hold on                                     %保持图形
X=[ones(length(y)1)x‘];                   %自变量矩阵
Y=log(y‘);                                  %因变量向量
[BBintEEintStats]=regress(YX);         %回归分析
R2=Stats(1);                                %拟合优度
a=exp(B(1));                                %模型常数还原
b=-B(2);                                    %回归系数
f=a*exp(-b*x);                              %模型表达
plot(xf‘b-‘);                             %添加趋势线
hold off                                    %绘图结束
s=sqrt(sumsqr(y-f)/(length(f)-2));          %计算标准误差
abR2s                                    %输出主要结果

%指数模型(I)的非线性拟合
%myfun.m
function  yhat = myfun(beta x)
       b1 = beta(1);
       b2 = beta(2);
       yhat = b1*exp(b2*x);
%以上模型通过编辑窗口保存在Matlab的work文件夹中

%指数模型(I)的非线性拟合
x=[0.5 1.5 2.5 3.5 4.5 5.5 6.5 7.5 8.5 9.5 10.5 11.5 12.5 13.5 14.5 15.5];
y=[26300 25100 19900 15500 11500 9800 5200 4600 3200 2300 1700 1200 900 700 600 500];
plot(xy‘r.‘);                             %绘制散点图
xlabel(‘Distance‘);                         %横轴标签(到城市中心的距离)
ylabel(‘Average density‘);                  %纵轴标签(人口平均密度)
hold on                                     %保持图形
beta0=[0 0];                                %设定迭代初始值
O=statset(‘MaxIter‘200);                   %设定最大迭代次数
[BEJ]=nlinfit(xy‘myfun‘beta0O);       %非线性拟合
a=B(1);                                     %模型常数
b=-B(2);                                    %回归系数
f=a*exp(-b*x);                              %模型表达
plot(xf‘b-‘);                             %添加趋势线
hold off                                    %绘图结束
s=sqrt(sumsqr(y-f)/(length(f)-2));          %计算标准误差
abs                                       %输出主要结果

%对数模型的线性回归
x=[100.6 103.5 231.3 120.4 230.4 234.3 162.7 236.3 158.7 145.2 207 203.3 433.5 372.9 525.3 629.2 963.4 608.8 876.7 832 703.1 872.6 2196.2 2422.4 2230.5 1117.1 2558.6 1190 1750.2 3710 6050 5760 4460 6618.2 6272.8 3840 6926.3 3580 5817.2 6610];
y=[2.6 4 6.7 8.9 10.2 12.6 14.6 18 21 22 26.1 28 31 32 34 36.4 38.6 40.8 43 44.5 46.4 48 50 52.7 54.3 59 60.1 62 64.4 67 69 70 72 74 76 78 80.7 82 86.4 88];
plot(xy‘r.‘);                             %绘制散点图
xlabel(‘Per capita income‘);                %横轴标签(人均收入)
ylabel(‘Percent Urban‘);                    %纵轴标签(城市化水平)
hold on                                     %保持图形
X=[ones(length(y)1)log(x‘)];              %自变量矩阵
Y=y‘;                                       %因变量向量
[BBintEEintStats]=regress(YX);         %回归分析
R2=Stats(1);                                %拟合优度
a=B(1);                                     %模型常数
b=B(2);                     

评论

共有 条评论