怎么利用人口数据和非线性最小二乘法估计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可能是用极大似然法来估计参数的,所以两个软件计算结果可能会不同。
也可能是自己程序编写有误,只能在以后实践中来发伍厅现错误了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)