MathGroup Archive 2007

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

Search the Archive

Re: is there a better way to iterate this?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg77858] Re: [mg77820] is there a better way to iterate this?
  • From: "dan siegal-gaskins" <dantimatter at gmail.com>
  • Date: Mon, 18 Jun 2007 07:04:02 -0400 (EDT)
  • References: <17667533.1182085910140.JavaMail.root@m35>

Hi DrMajorBob,

> Table[N[Correlation[Flatten[foo[[i]], 1][[All, 1]],
>      Flatten[foo[[i]], 1][[All, 2]], {i, Length[foo]}];
>
> has illegal syntax. There's a missing bracket somewhere.

sorry about that.  that table should be:

bar=Table[
      N[Correlation[Flatten[foo[[i]],1][[All,1]],
          Flatten[foo[[i]],1][[All,2]]]],{i,
        Length[foo]}];

these tables are embedded in a much larger notebook, and for
simplicity i took out a couple of lines where i use DeleteCases[] and
some other housekeeping functions.  i also renamed the variables foo,
bar, etc to make the question clearer.  for these reasons, i think
posting the actual notebook would probably do this thread more harm
than good.  :)  all that's really important is that listA and listB
are lists of 21 sublists, and each sublist has 18 elements.

many thanks,
dan

> On Sun, 17 Jun 2007 05:13:05 -0500, dantimatter <dantimatter at gmail.com>
> wrote:
>
> >
> > Hello all,
> >
> > I have a question about a specific problem I'm working now.  I would
> > like to do 100000+ iterations of a series of operations, but the way
> > I'm doing it now is slow and memory intensive.  I know there's a
> > better way to do it, but I just can't figure it out.  The problem: I
> > have two lists of 21 sublists: listA and listB, and I would like to
> > shuffle the order of the sublists in listA around and then correlate
> > them with listB.  Here's how I'm doing it now:
> >
> > ------------------------  begin inefficient code
> > -----------------------
> >
> > randomizedlistA = Table[RandomPermutation[listA], {100000}];
> >
> > listAlistBpairs =
> >                     Table[Table[
> >                       Transpose[{listB[[j]], randomizedlistA[[k, j]]},
> > {j, Length[listB]}], {k, Length[randomizedlistA]}];
> >
> > foo =
> >         Table[Table[
> >             listAlistBpairs[[k, All, i]], {i,
> >               Length[listAlistBpairs[[k, 1]]]}], {k,
> >             Length[listAlistBpairs]}];
> >
> > bar =
> >       Table[N[Correlation[Flatten[foo[[i]], 1][[All,1]],
> > Flatten[foo[[i]], 1][[All, 2]], {i,
> >           Length[foo]}];
> >
> > ------------------------  end inefficient code
> > --------------------------
> >
> > The variable 'bar' should now be a list of 100000 correlation
> > coefficients. I realize this is probably bad Mathematica code, but I
> > wrote it quickly and it worked great for smaller numbers of
> > permutations.  Can anyone suggest an easy way to do this better?
> >
> > Also, though it's not written in that code, I'd like to take those
> > correlation coefficients and generate a probability distribution out
> > of them.  For 10000 permutations it comes out as a beautiful
> > Gaussian;  I can only assume it's going to look even better for
> > 100000+ permutations.  Any suggestions on how to generate a
> > probability distribution, and how to calculate P-values from that
> > distribution, would also be extremely helpful.
> >
> > Many thanks,
> > Dan
> >
> >
> >
>
>
>
> --
> DrMajorBob at bigfoot.com
>


  • Prev by Date: Re: 6.0 Get Graphics Coordinates...
  • Next by Date: Re: more gripe about the new documentation center (DC) in Mathematica
  • Previous by thread: Re: is there a better way to iterate this?
  • Next by thread: Re: is there a better way to iterate this?