簡體   English   中英

在SAS中模擬ARMA / ARIMA時間序列過程

[英]Simulating ARMA/ARIMA time series processes in SAS

我一直在嘗試找到在SAS中生成模擬時間序列數據集的最簡單方法。 我最初是在LAG運算符上進行實驗,但這需要輸入數據,因此可能不是最好的方法。 (請參閱此問題: SAS:在沒有set語句的情況下使用lag函數(以模擬時間序列數據。)

有沒有人開發過宏或數據集,可以使用任意數量的AR和MA項生成時間序列? 做這個的最好方式是什么?

具體來說,我希望生成SAS稱為ARMA(p,q)的過程,其中p表示自回歸分量(因變量的滯后值),而q是移動平均值分量(誤差的滯后值)術語)。

非常感謝。

我已經開發了一個宏來嘗試回答這個問題,但是我不確定這是否是最有效的方法。 無論如何,我認為這對某人可能有用:

%macro TimeSeriesSimulation(numDataPoints=100, model=y=e,outputDataSetName=ts, maxLags=10);

data &outputDataSetName (drop=j);
array lagy(&maxlags) _temporary_;
array lage(&maxlags) _temporary_;
/*Initialise values*/

e = 0;
y=0;
t=1;
do j = 1 to 10;
lagy(j) = 0;
lage(j) = 0;
end;

output;

do t = 2 to &numDataPoints;  /*Change this for number of observations*/

    /*SPECIFY MODEL HERE*/
    e = rannorm(-1);  /*Draw from a N(0,1)*/
    &model; 

    /*Update values of lags on the moving average and autoregressive terms*/
    do j = &maxlags-1 to 1 by -1;  /*Note you have to do this backwards because otherwise you cascade the current value to all past values!*/
        lagy(j+1) = lagy(j);
        lage(j+1) = lage(j);
    end;
    lagy(1) = y;
    lage(1) = e;

    output;
end;
run;

%mend;

/*Example 1:  Unit root*/
%TimeSeriesSimulation(numDataPoints=1000, model=y=lagy(1)+e)

/*Example 2:  Simple process with AR and MA components*/
%TimeSeriesSimulation(numDataPoints=1000, model=y=0.5*lagy(1)+0.5*lage(1)+e)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM