Mathematica 9 is now available
Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2010

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

Search the Archive

Re: Map function with 2 variables

  • To: mathgroup at smc.vnet.net
  • Subject: [mg114962] Re: Map function with 2 variables
  • From: Peter Pein <petsie at dordos.net>
  • Date: Fri, 24 Dec 2010 04:12:39 -0500 (EST)
  • References: <iev2ua$4v6$1@smc.vnet.net>

On 23.12.2010 09:57, Jagra wrote:
> I have a problem that comes up in a couple of situations and I've
> never found the right solution.  I hoped I could get an idea of how to
> generally address these kinds of things.
>
> Say I have a function with two variables, something like a
> SpearmanRankCorrelation[] from the MultiVariate Statistics package:
>
> I also have matrix "m" with dimensions {3, 100}
>
> m = RandomReal[{0, 1}, {3, 100}];
>
> Now, say I want to create a correlation matrix using the
> SpearmanRankCorrelation function.
>
> I can get the rank correlations between a single vector of the matrix
> and all the other vectors like this:
>
> SpearmanRankCorrelation[m[[1]], #]&  /@ m
>
> This would give me a single row in a correlation matrix.   Pretty
> straightforward, but now I want all 3 rows like I would get with this:
>
> {SpearmanRankCorrelation[m[[1]], #]&  /@ m,
> SpearmanRankCorrelation[m[[2]], #]&  /@ m,
> SpearmanRankCorrelation[m[[3]], #]&  /@ m}
>
> There must be a way I can do this more directly.
> I must be missing something simple.
>
> Thanks.
>

Hi,

the first three possibilities which come to my mind are mappin, building 
a table and - the easiest one - using Outer[]:

In[1]:= Needs["MultivariateStatistics`"]
SeedRandom[1224]; (* merry Xmas *)
m=RandomReal[{0,1},{3,100}];
Function[row,SpearmanRankCorrelation[row,#]&/@m]/@m
Out[4]= 
{{1,10139/83325,-(6157/83325)},{10139/83325,1,347/83325},{-(6157/83325),347/83325,1}}
In[5]:= Table[SpearmanRankCorrelation[m[[i]],#]&/@m,{i,Length[m]}]
Out[5]= 
{{1,10139/83325,-(6157/83325)},{10139/83325,1,347/83325},{-(6157/83325),347/83325,1}}
In[6]:= Outer[SpearmanRankCorrelation,m,m,1]
Out[6]= 
{{1,10139/83325,-(6157/83325)},{10139/83325,1,347/83325},{-(6157/83325),347/83325,1}}

Peter


  • Prev by Date: Compiling in Mathematica 8
  • Next by Date: Re: Combining Slider and SetterBar in Manipulate
  • Previous by thread: Re: Map function with 2 variables
  • Next by thread: Generic Button/Palette design pattern?