MathGroup Archive 2005

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

Search the Archive

Re: Construcing correlation matrix from time-ordered list

  • To: mathgroup at smc.vnet.net
  • Subject: [mg54730] Re: Construcing correlation matrix from time-ordered list
  • From: Curt Fischer <tentrillion at gmail.NOSPAM.com>
  • Date: Mon, 28 Feb 2005 03:27:21 -0500 (EST)
  • References: <cvrptk$p0t$1@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

Adam Getchell wrote:
> Hello all,
> 
> I have time series data (a lot of it) in a format like:
> 
> {{{1897,1,4},40.37`},{{1897,1,5},40.87`},{{1897,1,6},40.95`},{{1897,1,7},
>     40.87`},{{1897,1,8},40.97`},{{1897,1,11},40.75`},{{1897,1,12},
>     41.4`},{{1897,1,13},41.45`},{{1897,1,14},41.79`},{{1897,1,15},
>     42.27`},{{1897,1,18},42.76`},{{1897,1,19},43.25`},{{1897,1,20},
>     42.78`},{{1897,1,21},42.52`},{{1897,1,22},42.42`}}
> 
> ie the year, then the value, for 100+ years.
> 
> I'd like to construct a correlation matrix so that year values become 
> columns, e.g.
> 
> 1897      1898
> ==========
> Value1     Value 1
> Value 2     Value 2
> ...
> 
>  From my long list of {{{date1},value1},{{date2},value2}}
> 
> But I'm not yet sure how to proceed. I'm looking at Cases or Select to 
> apply a function for each year range that will pick out that column.
> 
> Any pointers appreciated.

If your data for each year are all on the same dates (i.e. everything is 
equally spaced), then it is probably easier to use Partition[].

If not, then this approach below might work.  I'm not sure how well it 
would scale to very long lists.  (Note that I added one data point from 
the year 1898 to your data to see if my method was working.)

In[1]:=
data = {{{1897, 1, 4}, 40.37}, {{1897, 1, 5}, 40.87}, {{1897, 1, 6}, 
40.95}, {{1897, 1, 7}, 40.87}, {{1897, 1, 8}, 40.97}, {{1897, 1, 11}, 
   40.75}, {{1897, 1, 12}, 41.4}, {{1897, 1, 13}, 41.45}, {{1897, 1, 14},
      41.79}, {{1897, 1, 15}, 42.27}, {{1897, 1, 18}, 42.76}, {{1897, 1, 
19}, 43.25}, {{1897, 1, 20}, 42.78}, {{1897, 1, 21}, 42.52}, {{1897, 1, 
22}, 42.42}, {{1898, 1, 1}, 40}};

In[2]:=
yrlist = Union[data /.
     {{yr_Integer, mo_Integer, da_Integer},
       (val_)?NumericQ} -> yr]
Out[2]=
{1897, 1898}

In[3]:=
newData = data /.
     {{yr_Integer, mo_Integer,
        da_Integer}, (val_)?NumericQ} ->
      {yr, val};

In[4]:=
(Cases[newData, {#1, (val_)?NumericQ} -> val] & ) /@ yrlist
Out[4]=
{{40.37, 40.87, 40.95, 40.87,
    40.97, 40.75, 41.4, 41.45,
    41.79, 42.27, 42.76,
    43.25, 42.78, 42.52,
    42.42}, {40}}

-- 
Curt Fischer


  • Prev by Date: Re: Construcing correlation matrix from time-ordered list
  • Next by Date: Re: Mathematica Graphics output in an ASP.NET WebApplication II
  • Previous by thread: Re: Construcing correlation matrix from time-ordered list
  • Next by thread: Blurring with mathematica