精华内容
下载资源
问答
  • MATLAB 非线性 回归 拟合 nlintool
    2021-04-22 05:24:50

    非线性回归

    非线性回归可用命令nlinfit,nlintool,nlparci,nlpredci来实现。

    进行非线性回归时可使用nlinfit指令,其语法如下:

    beta = nlinfit(X,y,fun,beta0)

    [beta,r,J] = nlinfit(X,y,fun,beta0)

    [...] = nlinfit(X, y, fun, beta0, options)

    回归:

    回归可用命令

    [beta,r,J]=nlinfit(x,y,model,beta0) 或者

    nlintool(x,y,model,beta0,alpha)

    来实现。

    其中:

    命令 [beta,r,J]=nlinfit(x,y,model,beta0)的作用为确定回归系数;

    而命令 nlintool(x,y,model,beta0,alpha)

    产生一个交互式的画面,画面中有拟合曲线和y的置信区间。

    通过左下方的Export下拉式菜单,可以输出回归系数等。

    这里的输入数据:

    x、y分别为 m×n 矩阵和n维列向量,对一元非线性回归,x为n维列向量;

    model是事先用m-文件定义的非线性函数;

    beta0是回归系数的初值。

    Beta是估计出的回归系数,

    r(残差)、 J(Jacobian矩阵)是估计预测误差需要的数据。

    alpha为显著性水平,缺省时为0.05。

    预测和预测误差估计:

    预测和预测误差估计的命令格式为

    betaci=nlparci(beta,r,J)

    其用途为记算回归系数的置信区间;

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

    其用途为求nlinfit或nlintool所得的回归函数在x处的预测值Y及预测值的显著性为

    更多相关内容
  • Matlab 非线性回归

    2015-10-14 14:47:44
    Matlab 非线性回归的小程序和例子。
  • 包括指数、对数、幂指数、双曲线、Logistic、多项式、Gamma等模型的非线性拟合,每行代码均有中文注释便于理解
  • matlab多元参数非线性回归模型代码阅读KDNuggets的注意事项 在从[ KDNuggets ]()阅读Blog时写了本笔记。 在本简要说明中,它仅包含我感兴趣但并不足够熟悉的术语和主题。 有关完整内容,请参阅原件。 聚类:旨在...
  • 基于MATLAB的多元非线性回归模型.pdf
  • matlab偏最小二乘法代码,整理各种线性和非线性回归,参考网上资料
  • matlab多元参数非线性回归模型代码NEU 337-2020年Spring(53760) 现代神经科学的程序设计和数据分析 !!! 请在第一类之前安装Python和JupyterLab (请参阅下面的说明)。 如果遇到任何麻烦,请不要踩踏。 首先,在...
  • 关于如何使用Matlab构建多元非线性回归模型在数学建模中有许多情况需要用到多远非线性回归
  • 一个Matlab非线性回归的小程序和例子。
  • 基于MATLAB的多元非线性回归模型学习资料
  • MATLAB用拟合出的代码绘图该文档显示了Bootstrap在使用Matlab非线性回归问题中的应用 第1部分:具有模拟数据的Bootstrap演示 为了演示引导程序,我们将首先从模型中模拟一些嘈杂的数据: B(t)= Bo *(1-exp(-Kh...
  • Matlab一元非线性回归分析

    千次阅读 2021-04-20 12:15:53
    Matlab一元非线性回归分析的分析步骤与一元线性回归分析的步骤类似:大体分为以下几步:(1)绘制x,y的散点图,分析散点图的走势;(2)根据散点图的走势,确定回归方程的具体形式,特别是参数个数的设定和设定初始值;...

    Matlab一元非线性回归分析的分析步骤与一元线性回归分析的步骤类似:

    大体分为以下几步:

    (1)绘制x,y的散点图,分析散点图的走势;

    (2)根据散点图的走势,确定回归方程的具体形式,特别是参数个数的设定和设定初始值;

    (3)调用NonLinearModel的fit方法进行模型拟合;

    (4)模型改进,去除异常值的操作;

    (5)进行残差分析,验证模型。

    下面以某商品的数量与定价为例,进行实例展示;

    (1)绘制x,y的散点图,分析散点图的走势;

    [data,y0]=xlsread('C:\Users\箫韵\Desktop\Matlab数理与统计分析\exdata\test1',3);

    x=data(:,2);%提取列数据自变量数据

    y=data(:,3);%提取列数据因变量数据

    figure;

    plot(x,y,'ko');%绘制散点图

    xlabel('数量');

    ylabel('价格');

    05133c8185c9a446a0f1302f5f194750.png

    图1 散点图

    (2)根据散点图的走势,确定回归方程的具体形式,特别是参数个数的设定和设定初始值;

    %建立一元非线性回归方程

    % yi=f(xi;b1,b2)+ai

    % ai~N(0,aa^2),i=1,2,..n

    price=@(beta,x)beta(1)./(1-beta(2)*x);%根据散点图趋势建立方程f(x)=b1./(1-b2*x),方程形式并不唯一。

    beta0=[120,0.008];%beta0为b1,b2的初始值。根据x的取值范围,x在22与40之间,y>0,故需b2<0.25。

    %根据y值是84到280的不等分布,主要集中在110到130,故b1取值120较合适,根据方程,b2取0.008即可。

    opt=statset;%创建结构体变量类

    opt.Robust='on';%开启回归稳健性方法

    nlm1=NonLinearModel.fit(x,y,price,beta0,'Options',opt);

    %y=41.459./(1-0.02213*x)

    4ece3a554e28fc8d60a65c59b508a8e7.png

    (3)调用NonLinearModel的fit方法进行模型拟合;

    xnew=linspace(20,40,50)';%取50个x的值在20到40之间

    ynew=nlm1.predict(xnew);%进行ynew预测

    figure;

    plot(x,y,'ko');

    hold on;

    plot(xnew,ynew,'linewidth',2.5);

    xlabel('数量');

    ylabel('价格');

    legend('原始数据散点','非线性回归曲线');

    c0b1ab12d244be927700c086a250edc6.png

    图2 模型拟合效果

    (4)模型改进,去除异常值的操作;

    异常值的诊断。NonlinearModel类对象的Residuals属性值中有标准化残差和学生化残差值。这里通过学生化残差查询异常值

    Res2=nlm1.Residuals;

    Res_Stu2=Res2.Studentized;

    id2=find(abs(Res_Stu2)>2);

    %properties(nlm1);%可以查询nlm1的属性

    %去除异常值重新构建回归模型

    nlm2=NonLinearModel.fit(x,y,price,beta0,'Exclude',id2,'options',opt);

    %y=41.394./(1-0.22195*x)

    1f38401eead11d83f644dbbcab757a1c.png

    xnew=linspace(20,40,50)';

    y1=nlm1.predict(xnew);

    y2=nlm2.predict(xnew);

    figure;

    plot(x,y,'ko');

    hold on;

    plot(xnew,y1,'r--','linewidth',2);

    plot(xnew,y2,'b.','linewidth',2);

    xlabel('数量');

    ylabel('价格');

    legend('原始数据散点','回归曲线','去除异常值后的回归曲线');

    95a4054964cdca205e7f2ec334691fa5.png

    图3 去除异常值与未去除异常值的拟合对比

    (5)进行残差分析,验证模型。

    调用的是NonLinearModel类中的plotResiduals方法。残差分析有比较多的方法,这里以残差直方图和残差正态概率图为例。

    %回归诊断

    figure;

    subplot(1,2,1);

    nlm1.plotResiduals('histogram');

    title('(a)残差直方图');

    xlabel('残差r');

    ylabel('f(r)');

    subplot(1,2,2);

    nlm1.plotResiduals('probability');

    title('(b)残差正态概率图');

    xlabel('残差');

    ylabel('概率');

    7d450885eab88fd35feb615818040ef5.png

    图4 残差直方图和残差正态概率图

    原始数据

    order

    数量

    价格

    1

    25

    89

    2

    28

    108

    3

    26

    115

    4

    23

    99

    5

    26

    109

    6

    32

    124

    7

    35

    210

    8

    30

    126

    9

    34

    132

    10

    29

    110

    11

    33

    135

    12

    36

    226

    13

    34

    136

    14

    36

    220

    15

    36

    208

    16

    30

    125

    17

    32

    146

    18

    30

    129

    19

    35

    140

    20

    29

    116

    21

    31

    123

    22

    32

    126

    23

    28

    135

    24

    36

    208

    25

    40

    240

    26

    28

    125

    27

    29

    113

    28

    36

    208

    29

    32

    135

    30

    38

    267

    31

    40

    225

    32

    38

    278

    33

    28

    118

    34

    32

    124

    35

    34

    146

    36

    36

    208

    37

    30

    111

    38

    29

    115

    39

    36

    208

    40

    29

    123

    41

    25

    110

    42

    29

    135

    43

    26

    123

    44

    23

    99

    45

    26

    125

    36

    35

    180

    37

    35

    178

    38

    35

    175

    39

    35

    176

    40

    35

    180

    41

    35

    178

    42

    34

    175

    43

    35

    168

    44

    35

    167

    45

    34

    179

    43

    31

    129

    44

    31

    121

    45

    31

    125

    展开全文
  • 5.利用Matlab编程进行非线性回归分析.doc§5. 利用Matlab编程计算非线性回归模型——以Logistic曲线为例1.原始数据下表给出了某地区1971—2000年的人口数据(表1)。试分别用Matlab和SPSS软件,对该地区的人口变化进行...

    5.利用Matlab编程进行非线性回归分析.doc

    §5. 利用Matlab编程计算非线性回归模型

    ——以Logistic曲线为例

    1.原始数据

    下表给出了某地区1971—2000年的人口数据(表1)。试分别用Matlab和SPSS软件,对该地区的人口变化进行曲线拟合。

    表1 某地区人口变化数据

    年份时间变量t=年份-1970人口y/人1971133 8151972233 9811973334 0041974434 1651975534 2121976634 3271977734 3441978834 4581979934 49819801034 47619811134 48319821234 48819831334 51319841434 49719851534 51119861634 52019871734 50719881834 50919891934 52119902034 51319912134 51519922234 51719932334 51919942434 51919952534 52119962634 52119972734 52319982834 52519992934 52520003034 527根据上表中的数据,做出散点图,见图1。

    图1 某地区人口随时间变化的散点图

    从图1可以看出,人口随时间的变化呈非线性过程,而且存在一个与横坐标轴平行的渐近线,故可以用Logistic曲线模型进行拟合。

    因为Logistic曲线模型的基本形式为:

    所以,只要令:,就可以将其转化为直线模型:

    下面,我们分别用Matlab和SPSS软件进行回归分析拟合计算。

    2.用Matlab编程进行回归分析拟合计算

    源程序(Nonlinear-Regression-Model.m),如下:

    clear

    clc

    % 读入人口数据(1971-2000年)

    y =

    [33815

    33981

    34004

    34165

    34212

    34327

    34344

    34458

    34498

    34476

    34483

    34488

    34513

    34497

    34511

    34520

    34507

    34509

    34521

    34513

    34515

    34517

    34519

    34519

    34521

    34521

    34523

    34525

    34525

    34527];

    % 读入时间变量数据(t=年份-1970)

    t=[1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30];

    % 线性化处理

    for t = 1:30,

    x(t)=exp(-t);

    y(t)=1/y(t,1);

    end

    % 计算,并输出回归系数B

    c=zeros(30,1)+1;

    X=[c,x'];

    B=inv(X'*X)*X'*y

    for i=1:30,

    % 计算回归拟合值

    z(i)=B(1,1)+B(2,1)*x(i);

    % 计算离差

    s(i)=y(i)-sum(y)/30;

    % 计算误差

    w(i)=z(i)-y(i);

    end

    % 计算离差平方和S

    S=s*s';

    % 回归误差平方和Q

    Q=w*w';

    % 计算回归平方和U

    U=S-Q;

    % 计算,并输出F检验值

    F=28*U/Q

    % 计算非线性回归模型的拟合值

    for j=1:30,

    Y(j)=1/(B(1,1)+B(2,1)*exp(-j));

    end

    % 输出非线性回归模型的拟合曲线(Logisic曲线)

    plot(T,Y)

    上述程序运行后,输出

    (1)输出回归系数B及F检验值如下:

    B =

    1.0e-004 *

    0.2902

    0.0182

    F =

    47.8774

    (2)输出Logistic模型拟合曲线

    《计量地理学》(徐建华,高等教育出版社,2005)配套实习指导

    27

    展开全文
  • 讲解MATLAB在多元非线性回归方面的一篇学术论文,非常值得参考,很有用。
  • matlab多元非线性回归

    2014-09-22 13:41:39
    matlab多元非线性回归
  • MATLAB实现多元非线性回归

    万次阅读 多人点赞 2019-01-10 16:25:36
    简单多元非线性回归算例 现有以下数据 i x1 x2 x3 y 1 1.1 2 3.2 10.1 2 1 2 3.2 10.2 3 1.2 1.8 3 10 4 1.1 1.9 2.9 10.1 5 0.9 2.1 2.9 10 假如有以下模型: y=ax1+bx2+cx32y=ax_1+bx_2+cx_3^2y...

    简单多元非线性回归算例

    现有以下数据

    ix1x2x3y
    11.123.210.1
    2123.210.2
    31.21.8310
    41.11.92.910.1
    50.92.12.910

    假如有以下模型:

    y = a x 1 + b x 2 + c x 3 2 y=ax_1+bx_2+cx_3^2 y=ax1+bx2+cx32

    可以基于最小二乘法原理建立如下法方程组,其解则是上述系数.
    ∑ j = 0 n ( φ j , φ k ) a j = ( f , φ k ) , k = 0 , 1 , … n \sum_{j=0}^{n}(φ_j,φ_k ) a_j=(f,φ_k ),k=0,1,…n j=0n(φj,φk)aj=(f,φk),k=0,1,n
    其中 n = 2 , φ 0 = x 1 , φ 1 = x 2 , φ 2 = x 3 , f = y n=2, φ_0=x1,φ_1=x2,φ_2=x3,f=y n=2,φ0=x1φ1=x2φ2=x3,f=y.
    MATLAB代码如下

    x1=[1.1 1 1.2 1.1 0.9]';
    x2=[2 2 1.8 1.9 2.1]';
    x3=[3.2 3.2 3 2.9 2.9]';
    y=[10.1 10.2 10 10.1 10]';
    G=[x1,x2,x3.^2];
    z=G\y;
    

    得到 z = ( 3.296 , 3.4404 , − 0.0141 ) T z=(3.296, 3.4404, -0.0141)^T z=(3.296,3.4404,0.0141)T
    所以有所以有
    y = 3.296 x 1 + 3.4404 x 2 − 0.0141 x 3 2 y=3.296x_1+3.4404x_2-0.0141x_3^2 y=3.296x1+3.4404x20.0141x32

    或者可以调用MATLAB中的nlinfit函数。

    [beta,r]=nlinfit(X,y,myfun,beta0);
    

    其中输入参数X是自变量,y是因变量,myfun 是函数模型,beta0是初始迭代系数向量,返回值beta是模型的系数向量,r是每个点的残差。
    先定义myfun

    function y=myfun(beta,x)
    y=beta(1)*x(:,1)+beta(2)*x(:,2)+beta(3)*x(:,3).^2;
    

    然后主程序

    x1=[1.1 1 1.2 1.1 0.9]';
    x2=[2 2 1.8 1.9 2.1]';
    x3=[3.2 3.2 3 2.9 2.9]';
    y=[10.1 10.2 10 10.1 10]';
    X=[x1,x2,x3];
    beta0=[1,1,1];
    [beta,r]=nlinfit(X,y,'myfun',beta0);
    

    得到 b e t a = ( 3.296 , 3.4404 , − 0.0141 ) T beta=(3.296, 3.4404, -0.0141)^T beta=(3.296,3.4404,0.0141)T
    所以有
    y = 3.296 x 1 + 3.4404 x 2 − 0.0141 x 3 2 y=3.296x_1+3.4404x_2-0.0141x_3^2 y=3.296x1+3.4404x20.0141x32
    这边只涉及到如何获得回归方程中的系数,至于回归方程的优劣性判断,暂不做讨论。

    展开全文
  • 函数为y=b1*x1^b2*x2^b3*x3^b4*x4^b5,拟合代码为:data=[x1 x2 x3 x4 y0.34 0.016663232 58.83032941 7.20810443 8.7592953750.34 0.066652926 13.95...
  • 非线性回归分析及其Matlab实现

    万次阅读 多人点赞 2020-02-23 15:14:22
    回归分析简介 ...如果自变量与因变量之间的函数关系是线性函数,则称之为线性回归分析,否则称之为非线性回归分析。 线性回归的函数表达式一般表示为: 对于非线性回归分析,需要根据实际情况来确定函...
  • matlab中的regress指令,用以做数据的非线性回归分析
  • MATLAB多元线性回归

    2018-08-19 23:45:22
    MATLAB多元线性回归: 基于MATLAB的多元非线性回归模型.pdf 多元线性回归建模以及MATLAB和SPSS求解.pdf MATLAB语言在多元线性回归中的应用.pdf
  • MATLAB非线性回归拟合nlintool非线性回归非线性回归可用命令nlinfit,nlintool,nlparci,nlpredci来实现。进行非线性回归时可使用nlinfit指令,其语法如下:beta = nlinfit(X,y,fun,beta0)[beta,r,J] = nlinfit(X,y,...
  • MATLAB-非线性回归

    千次阅读 2019-08-16 16:07:05
    非线性回归 非线性回归可由命令nlinfit来实现,调用格式为 [beta,r,j] = nlinfit(x,y,'model’,beta0) 其中,输人数据x,y分别为n×m矩阵和n维列向量,对一元非线性回归,x为n维列向量model是事先用m-文件...
  • function [beta_hat,Y_hat,stats]=regress(X,Y,alpha) % 多元线性回归(Y=Xβ+ε)MATLAB代码 % % 参数说明 % X:自变量矩阵,列为自变量,行为观测值 % Y:应变量矩阵,同X % alpha:置信度,[0 1]之间的任意数据 % ...
  • 考虑到这一点,为方便起见并为更广泛的MATLAB社区提供有用的服务,我将所有非线性回归数据集都转换为易于使用的MAT文件,其中包含每个数据集的“结构”对象,每个对象都包含: * 因变量,x * 观察/模拟,y * 描述...
  • 回归分析(Regression Analysis)是研究一个变量Y与其他若干变量X之间相互关系的一种数学工具。...(摘自:王正林等《精通MATLAB科学计算》)我个人理解,在使用中,感觉跟拟合比较相近,但并不一样...
  • Matlab(多元)线性回归、非线性回归、多项式拟合、(自定义函数)曲线拟合-代码示例
  • 在回归分析中,如果有两个或两个以上的自变量,就...看到regress函数的例子,突然想到它居然可以用来做一些简单的多元非线性回归分析,例如,我们用它对一个多项式进行拟合,将要拟合的多项式进行展开,得到的其实...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,671
精华内容 3,468
关键字:

matlab非线性回归

matlab 订阅