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
>