然后,再使用matlab进行该线性模型的参数求解及检验,代码如下:
%%人口预测模型
%下面有某地区30年的人口数据,试给出该地区人口增长的数学模型
clear;clc
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=年份-起始年份
T=1:30;
%对数据作线性处理
for i=1:30,
x(i)=exp(-i);
Y(i)=1/y(i);
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';
%计算回归误差平方和
Q=w*w';
%计算回归平方和
U=S-Q;
%计算并输出F检验值
F=28*U/Q
%计算非线性回归模型的拟合值
for j=1:30,
p(j)=1/(b(1,1)+b(2,1)*exp(-j));
end
%输出非线性回归模型的拟合曲线
plot(T,y)
hold on
plot(T,p,'r-');