擬合

擬合是最基本的預測方法 matlab中提供了polyfit/fit函數 用法示例:

x=[1.0, 1.5, 2.0, 2.5, 3.0];
y=[0.9, 1.7, 2.2, 2.6, 3.0];
a=polyfit(x,y,1) %對x y進行1階擬合 返回y=ax+b的 兩個係數
xi=1:0.1:3;
yi=polyval(a,xi); %將xi 帶入y=ax+b 得到yi
plot(x,y,o,xi,yi);

p=fittype(a*x+b*sin(x)+c);%以ax+bsin(x)+c形式擬合
f=fit(x,y,p)%求出a b c係數

註:擬合階數過高意義不大 易出現過擬合現象。一般≤3階、

MATLAB中還提供了 擬合工具箱 在命令行窗口輸入

cftool

即可調用

時間序列

預測對象按照時間順序排列而成的序列。

時序預測:根據時序過去的變化規律,推測今後的趨勢。

變化形式:

長期趨勢變動 T_t

季節變動 S_t

循環變動 C_t

不規則變動R_t

模型:

加法模型、乘法模型、混合模型

處理方法:一次移動平均法

hat{y}_{t+1}=frac{1}{N}left(y_{t}+cdots+y_{t-N+1}
ight), t=N, N+1, cdots, T

預測的標準誤差: S=sqrt{frac{sum_{t=N+1}^{T}left(hat{y}_{t}-y_{t}
ight)^{2}}{T-N}}

%近9月企業收入,求第10月收入
y = [533.8 574.6 606.9 649.8 705.1 772.0 816.4 892.7 963.9];
T = 9; N = 4;
c = cumsum(y); %累加
yhat = (c(N:end) - [0 c(1:end-N)])/N; %每4個數加和求平均
y10 = yhat(end)
S = norm(yhat(1:end-1)-y(N+1:end))/sqrt(T-N)
y10 =861.2500
S =143.0133

一次指數平滑法

hat{y}_{t+1}=alpha sum_{j=0}^{infty}(1-alpha)^{j} y_{t-j}=alpha y_{t}+(1-alpha) hat{y}_{t}

一次差分指數平滑法

egin{array}{c}{
abla hat{y}_{t}=y_{t}-y_{t-1}} \ {
abla hat{y}_{t+1}=alpha 
abla y_{t}+(1-alpha) 
abla hat{y}_{t}} \ {hat{y}_{t+1}=alpha 
abla hat{y}_{t+1}+y_{t}}end{array}

灰色預測

模型使用的不是原始數據,而是生成數據。

不需要太多的數據,一般只需要≥4個數據。

只適用於中短期預測,只適合指數增長的預測。

GM(1,1) 表示模型是一階微分方程,且只含一個變數。

原始序列

X^{(0)}=left{x^{(0)}(1), x^{(0)}(2), cdots, x^{(0)}(n)
ight}

可行性檢驗條件

lambda(k)=frac{x^{(0)}(k-1)}{x^{(0)}(k)} inleft(mathrm{e}^{-frac{2}{n+1}}, mathrm{e}^{frac{2}{n+1}}
ight)

若不滿足可行性檢驗條件,則可做數據平移處理。

y^{(0)}(k)=x^{(0)}(k)+c

一次累加生成序列

X^{(1)} stackrel{	riangle}{=}left{x^{(1)}(1), x^{(1)}(2), cdots, x^{(1)}(n)
ight}

x^{(1)}(k)=sum_{i=1}^{k} x^{(0)}(i)

均值生成序列

egin{array}{c}{Z^{(1)}=left{z^{(1)}(2), z^{(1)}(3), cdots, z^{(1)}(n)
ight}} \ {z^{(1)}(k)=x^{(1)}(k) / 2+x^{(1)}(k-1) / 2}end{array}

灰微分方程

x^{(0)}(k)+a z^{(1)}(k)=b, quad k=2,3, cdots, n

白化微分方程

frac{mathrm{d} x^{(1)}}{mathrm{d} t}+a x^{(1)}(t)=b

累了 不想寫了

推薦閱讀:

相关文章