# commons-user mailing list archives

##### Site index · List index
Message view
Top
From Phil Steitz <phil.ste...@gmail.com>
Subject Re: [MATH] Looking for example code for the math.random and math.optimization libraries
Date Thu, 09 Dec 2010 04:35:03 GMT
On Wed, Dec 8, 2010 at 12:57 PM, Rothenberg, Michael <
MICHAEL.ROTHENBERG@nexteraenergy.com> wrote:

> Thanks for the quick response, Joe.  I am trying to pull random data based
>
> I have two variables with historical data and a correlation between them:
> power and gas prices.  I am now looking to simulate some relationships.  1st
> step is to pull random power and gas pairs for each time period based on a
> distribution (historical mean/stddev) and correlation. Lognormal is
> preferred, but I can make normal into log normal if needed.
>
> I was browsing through math.random and came across the
> CorrelatedRandomVectorGenerator class.  Sounds like that is right up my
> alley in terms of fitting my needs... but I have no idea how to
> implement/use it.
>
> You are right that you can use the class above.   Here is a code sample
from the setUp() method of CorrelatedRandomVectorGeneratorTest showing you
how to create a CorrelatedRandomVectorGenerator:

RandomGenerator rg = new JDKRandomGenerator();  // Could use any
RandomGenerator here
rg.setSeed(17399225432l);  // Fixed seed means same results every time
GaussianRandomGenerator rawGenerator = new GaussianRandomGenerator(rg);
generator = new CorrelatedRandomVectorGenerator(mean, covariance,
1.0e-12 * covariance.getNorm(), rawGenerator);

The mean argument is a doulbe[] array holding the means of the random vector
components.  In your case, this will have length 2.  The covariance argument
is a RealMatrix, which in your case needs to be 2 x 2.  The main diagonal
elements should be the variances of the vector components and the
off-diagonal elements should be the covariance.   For example, if the means
are 1 and 2 respectively, the desired standard deviations are 3 and 4,
respectively, then you can use

double[] mean = {1, 2};
double[][] cov = {{9, c}, {c, 16}};
RealMatrix covariance = MatrixUtils.createRealMatrix(cov);

where c is the desired covariance.   If you are starting with a desired
correlation, you need to translate this to a covariance by multiplying it by
the product of the standard deviations.  For example, if you want to
generate data that will give Pearson's R of 0.5, you would use c = 3 * 4 *
.5 = 6.

Phil

>
> Best regards,
>
> Michael
>
> w: 561.304.5921
> m: 772.263.8343
>
>
> -----Original Message-----
> From: Haswell, Joe [mailto:josiah.d.haswell@hp.com]
> Sent: Wednesday, December 08, 2010 12:41 PM
> To: Commons Users List
> Subject: RE: [MATH] Looking for example code for the math.random and
> math.optimization libraries
>
> Do you have any specific questions? Hard to point you in the right
> direction or provide help if I don't know what you need.
>
> Joe H.  | HP Software.
>
> -----Original Message-----
> From: Rothenberg, Michael [mailto:MICHAEL.ROTHENBERG@nexteraenergy.com]
> Sent: Wednesday, December 08, 2010 10:38 AM
> To: user@commons.apache.org
> Subject: [MATH] Looking for example code for the math.random and
> math.optimization libraries
>
> Hi all,
>
> I have been reading the JavaDoc and everything else I can find on the
> Commons.Math.Random and .Optimization libraries, but have not figured out
> how to use them.  Does anyone have any code examples/web sites/forums/etc..
> that I can use?
>
> Best regards,
>
> Michael
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
> For additional commands, e-mail: user-help@commons.apache.org
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
> For additional commands, e-mail: user-help@commons.apache.org
>
>

Mime
• Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message