這兩天在做時間序列的程式設計,和predict函式算是死磕上了,好在瀏覽了部分論壇後有一點心得,下面就用程式表達把。
首先人為構建乙個ar(1)序列:
x0 =1;
x = zeros(
1000,1
);x(1
)= x0;
for k=2:
1000
x(k)
=0.4
*x(k-1)
+0.1
*randn(1)
;end
其次去擬合、**它:
model = armax(x,[1
,0])
;predict1 = predict(model,x,1)
;
這裡做的是一步**,我就是在對predict函式的輸出上卡住的,不過好在經過半天的時間弄懂了一些。
predict函式看上去是在做**,其實實際上類似於乙個評估函式,它不會生成t時刻之後的**值,相反地,它只會生成t時刻之前的擬合值。
拿上面的**來說,我其實是做了一步**,但是predict1和x的樣本量是一樣的,這裡predict1最後的乙個擬合值x^t
\hat x_
x^t
是通過x裡的xt−
1∗ϕ1
x_*\phi_1
xt−1∗
ϕ1生成的,依次類推,直到predict1裡x^1
\hat x_1
x^1
,它無法通過x裡x0∗
ϕ1
x_*\phi_1
x0∗ϕ1
生成,因為x裡的x
=x=\
x=,因此它就從自己本身的x^2
ϕ1
\frac
ϕ1x^2
生成。
predict = predict(model,x,k)
;
假設我們用到的是ar(p)模型,設上述predict函式輸出的結果predict裡第i個值為x^i
\hat x_i
x^i
,該函式在計算x^i
\hat x_i
x^i
時,用到的是x裡第i-k,i-k-1,i-k-2,…,i-k-p+1個值xi−
1,xi
−2,⋯
,xi−
k−p+
1x_,x_,\cdots,x_
xi−1,
xi−2
,⋯,
xi−k
−p+1
來計算的,當然,如果i-k-p+1<1時,它會從自身取值倒推出前面的值。
官網鏈結在此。
當然該函式起這個名字肯定是能拿來做**的,只要稍微修改一下輸入就可以,比如我想要**未來k步:
predict = predict(model,
[x;zeros(k,1)
],k)
;
輸出結果predict的最後k行就是**的值。 函式基礎 匿名函式,函式,箭頭函式,立即執行函式
doctype html html lang en head meta charset utf 8 meta name viewport content width device width,initial scale 1.0 title document title head body body ...
函式 常見函式
def fib n if n 1 return 1if n 2 return 1return fib n 1 fib n 2 def hannuo n,a,b,c n 表示有n個盤子 a 代表第乙個塔,開始的塔 b 代表第二個塔,過渡塔 c 代表第三個塔,目標塔 d.在 中n 2,這個分支可以不要,...
Lua 函式 函式
在lua中,函式是一種對語句和表示式進行抽象的主要機制。函式既可以完成某項特定的任務,也可以只做一些計算並返回結果。lua具有一項非常於總不同的特徵,允許函式返回多個結果 s,e string.find hello lua users lua print s,e 7 9 以lua編寫的函式同樣可以返...