《菜鸟修炼之路(一)——MATLAB使用第一弹》
以下例为非线性多元函数对参数的确定及求其置信区间的方法:
在研究化学动力学反应过程中,建立了一个反应速度和反应物
含量的数学模型,形式为
其中是未知参数,是三种反应物(氢,n戊烷,
异构戊烷)的含量,y是反应速度.今测得一组数据如下表,试由
此确定参数,并给出置信区间.的参考值为
(1,0.05, 0.02, 0.1, 2).
序号 | 反应速度y | 氢x1 | n戊烷x2 | 异构戊烷x3 |
1 | 8.55 | 470 | 300 | 10 |
2 | 3.79 | 285 | 80 | 10 |
3 | 4.82 | 470 | 300 | 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 | 300 | 54 |
10 | 8.50 | 100 | 300 | 120 |
11 | 0.05 | 100 | 80 | 120 |
12 | 11.32 | 285 | 300 | 10 |
13 | 3.13 | 285 | 190 | 120 |
程序如下
m文件函数:
function y=huaxuedongli(beta,x)
y=(beta(1)*x(:,2)-x(:,3)./beta(5))./(1+beta(2)*x(:,1)+beta(3)*x(:,2)+beta(4)*x(:,3));
主函数程序:
x1=[470 285 470 470 470 100 100 470 100 100 100 285 285]';
x2=[300 80 300 80 80 190 80 190 300 300 80 300 190]';
x3=[10 10 120 120 10 10 65 65 54 120 120 10 120]';
x=[x1 x2 x3];
beta0=[1 0 0 0 1]'; %beta0可任取
[beta,r,J]=nlinfit(x,y,'huaxuedongli',beta0);
beta
betaci=nlparci(beta,r,J);
betaci
输出结果:
beta =
1.2526
0.0628
0.0400
0.1124
1.1914
betaci =
-0.7467 3.2519
-0.0377 0.1632
-0.0312 0.1113
-0.0609 0.2857
-0.7381 3.1208
由程序结果解释如下:
各参数值如下:
各参数的置信区间为:
Β1-0.7467 3.2519
Β2-0.0377 0.1632
Β3-0.0312 0.1113
Β4-0.0609 0.2857
Β5-0.7381 3.1208
实际上betaci=nlparci(beta,r,J);应该加上alpha即betaci=nlparci(beta,r,J,alpha)(缺省时默认为0.05);
置信区间的含义是有1-alpha的把握认为参数会落在该区间内。
公式是不会输出结果的,要输出结果必须单独将要输出的单独列出来,如betaci及beta;
附:此程序要调用m函数,涉及到如何建立m函数文件,在2008b中,点击菜单栏中的file——New——blank M-file。