怎样用matlab实现logistic方程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样用matlab实现logistic方程相关的知识,希望对你有一定的参考价值。

参考技术A Matlab并没有提供现成的函数来进行logistic回归分析。但提供了非线性相关函数,所以想办法编一个函数来进行logistic回归分析。

编写函数:

function yhat = logit(beta,x)
b1 = beta(1);
b2 = beta(2);
yhat=exp(b1+b2*x)./(1+exp(b1+b2*x)); %为了完成如下函数形式。

调用实例:

clear;
clc;
clg;
ck=[20;60;100;140;180;220;260;300;340;380;420;460;500];
response=[2/90;13/39;30/38;30/35;1;19/20;18/19;13/14;1;1;1;1;1];
beta=[0.5 0.5];
betahat = nlinfit(ck,response,@logit,beta);
plot(ck,response,'o');
hold on;
plot(ck,logit(betahat,ck),'r');

不过得注意的是,这里是用least-squares parameter estimates(即最小二乘)来估计参数的,而SPASS可能是用极大似然法来估计参数的,所以两个软件计算结果可能会不同。

也可能是自己程序编写有误,只能在以后实践中来发现错误了。

怎么用matlab求解Logistic模型中的三个参数

给你这个实例,来说明如何用matlab求解Logistic模型中的三个参数。

x=[21 24 27 30 33 36 39 42 45 48];  %已知数值

y=[0 4.5541 11.5836 19.9043 22.7024 25.2441 26.2109 26.5693 26.6396 25.9511]; %已知数值

fun=inline('a(1)./(1+exp(a(2)-a(3).*x))','a','x');  %定义Logistic模型函数

a0=[0.95717  0.48538  0.80028]; %a的初值

a = nlinfit(x,y,fun,a0);  %求解Logistic模型中的三个参数

syms x

fx=vpa(fun(a,x),5);

str1=['拟合曲线f(x):',char(fx)];

fprintf('%s\\n',str1)  %显示Logistic模型函数

运行结果

参考技术A 建立m函数文件存为logistic1
function f=logistic1(b)
t=[0,5,10,24,33,48,57,72,96,120,144,168,192,216];y=[0,0.028,0.103,0.336,0.450,0.597,0.716,0.778,0.835,0.849,0.816,0.839,0.811,0.816];
f = y-b(1)./(1+b(2).*exp(-b(3).*t));
b0=[10,2,2];
>> b=leastsq('logistic1',b0)
b =
0.8221 13.9173 0.0818
或者cftool
General model:
f(x) = b/(1+a*exp(-k*x))
Coefficients (with 95% confidence bounds):
a = 13.92 (6.301,21.53)
b = 0.822 (0.7911,0.853)
k = 0.08184 (0.06479,0.0989)
Goodness of fit:
SSE:0.01404
R-square:0.9898
Adjusted R-square:0.9879
RMSE:0.03572

以上是关于怎样用matlab实现logistic方程的主要内容,如果未能解决你的问题,请参考以下文章

数学建模MATLAB从入门到精通:Logistic模型原理及应用案例(附MATLAB代码)

怎么用matlab求解Logistic模型中的三个参数

怎样用matlab从含有2个变量的方程中提取一个变量出来。。。。。。。。。。。。。

一道matlab关于求齐次方程的问题

怎样在matlab中得到直线方程与plot出的曲线之间的交点坐标

采用SPSS17.0进行二元logistic回归分析方法筛查某种疾病易患因素,所得结果“不在方程中变量”OR值的计算