On Wed, 12 Mar 2014, Riccardo (Jack) Lucchetti wrote:
On Wed, 12 Mar 2014, Андрей Викторович | Andreï wrote:
> I am trying to evaluate the distribution of Dickey---Fuller's $T(\hat
> \alpha-1)$ statistic in the model $x_t = \alpha x_{t-1} + \varepsilon$ with
> the unit root $\alpha=1$ to the highest precision.
You could speed up your code significantly by cutting down on unnecessary and
intermediate operations; see if this helps:
<hansl>
loop i=1..iterations --progressive --quiet
series x=cum(normal())
ols x x(-1) --quiet
scalar DFT=$T*($coeff[1]-1)
store df1.csv DFT --no-header
endloop
</hansl>
This is the fastest version I can come up with on a quick go (if one
doesn't mind having the result as a matrix):
<hansl>
set stopwatch
scalar T = 10000
matrix y = zeros(T,1)
scalar iters=10000
matrix DFT = zeros(iters,1)
loop i=1..iters --quiet
y = cum(mnormal(T, 1))
DFT[i] = (T-2) * (mols(y[3:],mlag(y,1)[3:])-1)
endloop
mwrite(DFT, "DFT.mat")
printf "Time taken: %f seconds\n", $stopwatch
</hansl>
Allin Cottrell