MathGroup Archive 2000

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Correlation function and data


Hi,

in *every* term of your summation you calculate the  two times
the mean value and one time the variance *and* you are wondering
why it take so long ? Strange ..

n=Length[data];
aved=Mean[data];
vard=Variance[data];
centerd=(#-aved) & /@ data

c[y_]:=Sum[centerd[[i]]*centerd[[i+y]], {i,1,n - y}]/vard

may help and

c[y_]:=(Dot @@ (Take[#,n-y] & /@ {centerd,RotateLeft[centerd,y]}))/vard

may be a bit faster

Regards
  Jens

Deborah Leddon wrote:
> 
> Hello,
>  I am trying to construct an autocorrelation function that can be
> applied to a data set as follows;
> 
> n=Length[data];
> c[y_]:= Sum[(data[[i]] - Mean[data] )* ( data[[i+y]] - Mean[data])/
>                 Variance[data], {i,1,n - y}];
> corrfunction = Array[c, {n - 1}];
> 
> ListPlot[corrfunction, PlotJoined->True]
> 
> Problem is , this routine works well for data sets up to a length of
> 300 points, but gets unusually long for larger data sets , say
> around 1000-3000 points in length. I've tried  "Map" (using
> anonymous function rules), Table-Evaluate, etc..
> 
> Anyone got any ideas? I would much appreciate them!
> 
> Regards,
> Deb L.


  • Prev by Date: What happened to MonomialList?
  • Next by Date: Re: Re: Correlation function and data
  • Previous by thread: Re: Re: Correlation function and data
  • Next by thread: Re: Re: Correlation function and data