人口模型回归

来源:互联网 发布:用户行为分析python 编辑:程序博客网 时间:2024/04/26 01:53
%% MATLAB Version: 2013aclc, clear all, close all% 读入人口数据(1971-2000年)Y=[338153398134004341653421234327343443445834498344763448334488345133449734511345203450734509345213451334515345173451934519345213452134523345253452534527]% 读入时间变量数据(t=年份-1970)T=[123456789101112131415161718192021222324252627282930]% 线性化处理n=length(Y);for t = 1:30,    x(t)=exp(-t);   y(t)=1/Y(1,t);end% 计算,并输出回归系数Bc=ones(n,1);X=[c,x'];B=inv(X'*X)*X'*y'for i=1:n,% 计算回归拟合值        z(i)=B(1,1)+B(2,1)*x(i);% 计算离差    s(i)=y(i)-sum(y)/n;% 计算误差        w(i)=z(i)-y(i);end% 计算离差平方和SS=s*s';% 回归误差平方和QQ=w*w';% 计算回归平方和UU=S-Q;% 计算,并输出F检验值F=(n-2)*U/Q;f=finv(0.95,1,n-2);if F>f   disp(['F检验通过: ',num2str(F),'>',num2str(f)])end% 计算非线性回归模型的拟合值for j=1:30,    Y1(j)=1/(B(1,1)+B(2,1)*exp(-j));end% 输出非线性回归模型的拟合曲线(Logisic曲线)figureh1=plot(T,Y,'k*');figureh2=plot( T, Y1,'--k*',...    'LineWidth',2)xlabel('时间/年', 'fontsize',12);ylabel('人口/人', 'fontsize',12);

注意点:

求解参数所用的矩阵

F检验


0 0
原创粉丝点击