美文网首页
第三章 非线性模型参数估计

第三章 非线性模型参数估计

作者: 爱学习的张小路 | 来源:发表于2017-04-20 17:51 被阅读0次

    方法——由研究目标和对象决定

    1)基于线性化处理的最小二乘法计算
    直线拟合;估计模型参数全局效果更好
    2)基于非线性方程运用的迭代算法
    曲线拟合;模型标准误差更低
    注:对于那些无法线性化的模型,基于某种迭代运算的曲线拟合是无可替代的选择

    3.1 常见数学模型表达式

    3.2 常见实例——一变量的情形

    3.2.1 指数模型(I)

    3.2.1.2指数模型I的线性回归

    第一步 做散点图

    散点图

    第二步,回归建模
    判断方法:
    1)根据散点图进行估计
    2)逐个模型进行尝试
    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(x,y,'r.');
    xlabel('Distance');
    ylabel('average density');
    hold on
    X=[ones(length(y),1),x'];
    Y=log(y');
    [B,Bint,E,Eint,Stats]=regress(Y,X);
    R2=Stats(1);
    a=exp(B(1));
    b=-B(2);
    f=aexp(-bx);
    plot(x,f,'b-');
    hold off
    s=sqrt(sumsqr(y-f)/(length(f)-2));
    a,b,R2,s

    过程

    第三步,在散点图中添加趋势线

    添加线性回归的负指数趋势线

    第四步 模型效果分析

    结果图 模型比较图

    对于图像的R2进行比较,R2越大表明拟合的越好。

    3.2.1.3指数模型I的非线性拟合

    第一步 构造指数函数

    function yhat=myfun(beta,x)
    b1=beta(1);
    b2=beta(2);
    yhat=b1exp(b2x);

    第二步 非线性拟合

    借助nlinfit函数调用非线性拟合子程序
    [Beta,R,J]=nlinfit(X,Y,Modelfun,Beta0)
    与nilinfit配套,可以借助统计选项构造函数statset定义最大迭代次数
    option=statset('MaxIter‘,200)
    [Beta,R,J]=nlinfit(X,Y,Modelfun,Beta0,option)

    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(x,y,'r.');
    xlabel('Distance');
    ylabel('average density');
    hold on
    beta0=[0 0]; %设定迭代初始值
    0=statset('MaxIter',200); %设定最大迭代次数
    [B,E,J]=nlinfit(x,y,'myfun',beta0,0); %非线性拟合
    a=B(1); %模型常数
    b=-B(2); %回归系数
    f=aexp(-bx); %模型表达
    plot(x,f,'b-'); %添加趋势线
    hold off
    s=sqrt(sumsqr(y-f)/(length(f)-2)); %计算标准误差
    a,b,s
    第三步,拟合结果简评

    相关文章

      网友评论

          本文标题:第三章 非线性模型参数估计

          本文链接:https://www.haomeiwen.com/subject/drulzttx.html