怎么用Matlab编程求解logistic模型中r,x0,xm的值?

怎么用Matlab编程求解logistic模型中r,x0,xm的值?,第1张

怎么利用人口数据和非线性最小二乘法估计y=Xm/[1+(Xm/X0-1)*exp(-r*t)]式中r,x0,xm的值?其求解液陪山方法如下:

1、将【1790年乱御~2000年】的年份按序列来表示,闹中并赋值给t。即

t=1:22%1——代表1790年,2——代表1800年,。。。,22——代表2000年

2、将人口数赋值给y

3、自定义logistic模型函数,即

fun=inline('a(1)./(1+(a(1)/a(2)-1)*exp(-a(3).*t))','a','t')

4、使用nlinfit非线性最小二乘法函数,拟合系数Xm、X0、r,即

a= nlinfit(t,y,fun,b)

5、使用plot绘图函数,绘制拟合前后对比图

6、根据上述方法,编写程序并执行,可以得到如下结果。

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=[2060100140180220260300340380420460500]

response=[2/9013/3930/3830/35119/2018/1913/1411111]

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可能是用极大似然法来估计参数的,所以两个软件计算结果可能会不同。

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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12543736.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存