1、非线性回归 非线性回归可用命令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) 来实现。
2、 其中: 命令 [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矩阵)是估计预测误差需要的数据。
3、 alpha为显著性水平,缺省时为0.05。 预测和预测误差估计: 预测和预测误差估计的命令格式为 betaci=nlparci(beta,r,J) 其用途为记算回归系数的置信区间; [Y,DELTA]=nlpredci(model,x,beta,r,J) 其用途为求nlinfit或nlintool所得的回归函数在x处的预测值Y及预测值的显著性为1-alpha的置信区间Y± DELTA; alpha缺省时为0.05。 某些非线性回归也可化为多元线性回归来解。 ................. 例: 在工具箱中,
4、有reaction.mat之资料,这是有关化学反应所到之观察值,其中牵涉到三种化学反应:氢、n-戊烷、同位戊烷等。 其中之函数hougen已经存在,是使用Hougen-Watson模式建立之反应动能量,其回应值为预设之反应速率。 load reaction betafit = nlinfit(reactants,rate,@hougen,beta) betafit = 1.2526 0.062776 0.040048 0.11242 1.1914 其中之hougen.m可以type hougen,得其內容如下:
5、function yhat = hougen(beta,x) %HOUGEN Hougen-Watson model for reaction kinetics. % YHAT = HOUGEN(BETA,X) gives the predicted values of the % reaction rate, YHAT, as a function of the vector of % parameters, BETA, and the matrix of data, X. % BETA must have 5 elements and X must have th
6、ree % columns. % % The model form is: % y = (b1*x2 - x3/b5)./(1+b2*x1+b3*x2+b4*x3) % % Reference: % [1] Bates, Douglas, and Watts, Donald, "Nonlinear % Regression Analysis and Its Applications", Wiley % 1988 p. 271-272. % Copyright 1993-2004 The MathWorks, Inc
7、 % $Revision: 2.7.2.1 $ $Date: 2004/01/24 09:34:06 $ % B.A. Jones 1-06-95. b1 = beta(1); b2 = beta(2); b3 = beta(3); b4 = beta(4); b5 = beta(5); x1 = x(:,1); x2 = x(:,2); x3 = x(:,3); yhat = (b1*x2 - x3/b5)./(1+b2*x1+b3*x2+b4*x3); .... 另有一个nlintool指令函数则可利用图形介面执行,可在指令窗下打入
8、执行之。 .... ... close all clear,clc yhat = @(beta,x) (beta(4)*x(:,2) - x(:,3)/beta(5))./(1+beta(1)*x(:,1)+beta(2)*x(:,2) + beta(3)*x(:,3)); x0=[1 8.55 470 300 10 2 3.79 285 80 10 3 4.82 470 3
9、00 120 4 0.02 470 80 120 5 2.75 470 80 10 6 14.39 100 190 10 7 2.54 100 80 65 8 4.35 470 190 65 9 13.00 100
10、 300 54 10 8.50 100 300 120 11 0.05 100 80 120 12 11.32 285 300 10 13 3.12 285 190 120]; x=x0(:,3:5); y=x0(:,2); beta=[0.1,0.05,0.02,1,2]; %回归系数的初值 bet
11、a = [0.1000 2.0000 1.0000 0.0500 0.0200]; [betahat,f,J]=nlinfit(x,y,yhat,beta); % f,j是下面命令用的信息 betaci=nlparci(betahat,f,J); betaa=[betahat',betaci] %回归系数及其置信区间 betaa=[betahat',betaci] betaa=[betahat,betaci] [yhat1,delta]=nlpredci(yhat,x,betahat,f,J); % y的预测值及其置信区间半径,置信区间为yhat1 ±delta。 yy=[y,yhat1,delta] 用命令nlintool可看到画面。 [beta,r,J,COVB,mse] = nlinfit(X,y,fun,beta0) nlintool(x,y,yhat1,beta) [betahat,f,J,COVB,mse] = nlinfit(x,y,yhat,beta) ................






