人口logistic模型公式_人口预测模型Matlab实现Logistic曲线模型
數據:
年份
時間變量t=年份-1970
人口y
年份
時間變量t=年份-1970
人口y
1971
1
33815
1986
16
34520
1972
2
33981
1987
17
34507
1973
3
34004
1988
18
34509
1974
4
34165
1989
19
34521
1975
5
34212
1990
20
34513
1976
6
34217
1991
21
34515
1977
7
34344
1992
22
34517
1978
8
34458
1993
23
34519
1979
9
34498
1994
24
34519
1980
10
34476
1995
25
34521
1981
11
34483
1996
26
34521
1982
12
34488
1997
27
34523
1983
13
34513
1998
28
34525
1984
14
34497
1999
29
34525
1985
15
34511
2000
30
34527
Logistic模型的基本形式是:
y=1/(a+b*exp(-t))
所以令y'=1/y; ?x'=exp(-t)強曲線轉化成直線模型
y'=a+b*x'
Matlab代碼進行分析擬合計算:
代碼一:(數據較少時刻意采用這種方式,直接在代碼中輸入數據)
clear
clc
% 讀入人口數據(1971-2000年)
Y=[338153398134004341653421234327343443445834498344763448334488345133449734511345203450734509345213451334515345173451934519345213452134523345253452534527]
% 讀入時間變量數據(t=年份-1970)
T=[123456789101112131415161718192021222324252627282930]
% 線性化處理
for t = 1:30,
x(t)=exp(-t);
y(t)=1/Y(t);
end
% 計算,并輸出回歸系數B,即計算回歸方程 y'=a+bx' 中的a和b的值
c=zeros(30,1)+1;
X=[c,x'];%相當于30個方程組,求解a和b 的值.
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
% 輸出非線性回歸模型的擬合曲線(Logisic曲線)
plot(T,Y,'r*')
擬合圖形:
改進的代碼(當數據較多時,從Excel中讀取數據):
clear
clc
Y=xlsread('D:\sun1.xlsx',1,'B1:B30');%讀取數據
Y=Y';
T=xlsread('D:\sun1.xlsx',1,'A1:A30');%讀取數據
T=T';
for t=1:30,
x(t)=exp(-t);
y(t)=1/Y(t);
end
c=zeros(30,1)+1;
X=[c,x'];
B=inv(X'*X)*X'*y'%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=28*U/Q
for j=1:30,
Y(j)=1/(B(1,1)+B(2,1)*exp(-j));
end
plot(T,Y)
擬合曲線圖形:
輸出結果:
回歸系數B及F檢驗值:
B =
1.0e-04 *
0.2902
0.0182
F =
47.8774
總結
以上是生活随笔為你收集整理的人口logistic模型公式_人口预测模型Matlab实现Logistic曲线模型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一个OpenMP的学习程序
- 下一篇: 51单片机 protues 的仿真程序源