Tag Archives: Logistic

其实,Logistic模型是在是个非常老的问题了,第一次参加院赛,给的数据是美国的人口数据,可以非常好的与Logistic模型拟合,于是我用的就是Logistic模型,只不过当时对Matlab还比较生,程序写的是在不再不怎么样,现实建立一个M文件作为函数模型,又调用nlinfit()函数才完成,书中是自己运用Logistic的推导过程,先转成线性模型然后再回归分析,未尝不是个好方法。

M源文件(与书中源码相比,略有改动):

clear
clc
% 读入人口数据(1971-2000)
Y = [33815  33981   34004   34165   34212   34327   34344   34458   34498   34476   34483   34488   34513   34497   34511   34520   34507   34509  34521   34513    34515   34517   34519   34519   34521   34521  34523   34525   34525   34527]
% 读入时间变量数据(t=年份-1970)
T = 1:1:30
% 保存原始数据
Yo = Y;
To = T;
% 线性化处理
for t = 1:30,
    x(t) = exp(-t);
    y(t) = 1/Y(t);
end
% 计算,并输出回归系数 B
c = zeros(30,1)+1;
X = [c,x'];
B = inv(X'*X)*X'*y'
for i = 1:30,
    % 计算回归拟合值
    z(i) = B(1,1)+B(2,1)*x(i);
    % 计算离差
    s(i) = y(i) - sum(y)/30;
    % 计算误差
    w(i) = z(i) - y(i);
end
% 计算离差平方和S
S = s * s';
% 计算误差平方和Q
Q = w * w';
% 计算回归平方和U
U = S - Q;
% 计算,并输出F检验值
F = 28 * U / Q
% 计算非线性回归模型的拟合值
for j = 1:30,
    Y(j) = 1 / (B(1, 1) + B(2, 1) * exp(-j));
end
% 输出非线性回归模型的拟合曲线(Logistic 曲线)
plot(T, Y, To, Yo, 'r*')
grid on;

Read More →