[Numpy-discussion] Time series: lag function

Sven Schreiber svetosch at gmx.net
Wed Dec 27 18:17:35 CST 2006

Vincent Nijs schrieb:
> I am  tryin to convert some of my time-series code written in Ox to
> scipy/numpy (e.g., unit root tests, IRFs, cointegration, etc). Two key
> functions I need for this are 'lag' and 'diff'. 'diff' is available but
> 'lag' is apparently not.
> Below is my attempt at a lag function. I tried to be somewhat consistent
> with the diff function which is part of numpy (also listed for convenience).
> It seems to work fine for a 2-d array but not for a 1-d or 3-d array (see
> tests at bottom of email). I'd appreciate any suggestions you may have.

Great to see somebody converting from Ox to numpy, I see synergies ahead!

> def lag(a, n=1, lag_axis=0, concat_axis=1):
>     """
>     Calculate the nth order discrete lag along given axis.
>     Note: axis=-1 means 'last dimension'. This is the default
>     for the diff function. However, the first dimension (0)
>     may be preferred for time-series analysis.
>     """
>     a = asanyarray(a)
>     n = ravel(n)                # convert input to an array

why don't you leave n as an integer? maybe you're trying to be too
clever here. I think it's a good idea to have lag resemble the existing
diff function, and then a single number n should be enough.

(And I'm not sure about your concat_axis, e.g. what does axis=1 mean for
a 1-d array?)

Do you get your errors also for integer n?


More information about the Numpy-discussion mailing list