List of usage examples for org.apache.commons.math3.random GaussianRandomGenerator nextNormalizedDouble
public double nextNormalizedDouble()
From source file:org.apache.metron.statistics.OnlineStatisticsProviderTest.java
@Test public void testNormallyDistributedRandomData() { List<Double> values = new ArrayList<>(); GaussianRandomGenerator gaussian = new GaussianRandomGenerator(new MersenneTwister(0L)); for (int i = 0; i < 1000000; ++i) { double d = gaussian.nextNormalizedDouble(); values.add(d);//from w w w. j a v a 2 s . c om } validateEquality(values); }
From source file:org.apache.metron.statistics.OnlineStatisticsProviderTest.java
@Test public void testNormallyDistributedRandomDataShifted() { List<Double> values = new ArrayList<>(); GaussianRandomGenerator gaussian = new GaussianRandomGenerator(new MersenneTwister(0L)); for (int i = 0; i < 1000000; ++i) { double d = gaussian.nextNormalizedDouble() + 10; values.add(d);//w w w . java 2 s . c om } validateEquality(values); }
From source file:org.apache.metron.statistics.OnlineStatisticsProviderTest.java
@Test public void testNormallyDistributedRandomDataShiftedBackwards() { List<Double> values = new ArrayList<>(); GaussianRandomGenerator gaussian = new GaussianRandomGenerator(new MersenneTwister(0L)); for (int i = 0; i < 1000000; ++i) { double d = gaussian.nextNormalizedDouble() - 10; values.add(d);//from w ww . j av a2 s . co m } validateEquality(values); }
From source file:org.apache.metron.statistics.OnlineStatisticsProviderTest.java
@Test public void testNormallyDistributedRandomDataSkewed() { List<Double> values = new ArrayList<>(); GaussianRandomGenerator gaussian = new GaussianRandomGenerator(new MersenneTwister(0L)); for (int i = 0; i < 1000000; ++i) { double d = (gaussian.nextNormalizedDouble() + 10000) / 1000; values.add(d);/*w ww.j a va 2 s . c o m*/ } validateEquality(values); }
From source file:org.apache.metron.statistics.OnlineStatisticsProviderTest.java
@Test public void testNormallyDistributedRandomDataAllNegative() { List<Double> values = new ArrayList<>(); GaussianRandomGenerator gaussian = new GaussianRandomGenerator(new MersenneTwister(0L)); for (int i = 0; i < 1000000; ++i) { double d = -1 * gaussian.nextNormalizedDouble(); values.add(d);/*from w ww . j av a 2 s .co m*/ } validateEquality(values); }
From source file:org.apache.metron.statistics.outlier.MedianAbsoluteDeviationTest.java
@Test public void test() { GaussianRandomGenerator gaussian = new GaussianRandomGenerator(new MersenneTwister(0L)); DescriptiveStatistics stats = new DescriptiveStatistics(); List<MedianAbsoluteDeviationFunctions.State> states = new ArrayList<>(); MedianAbsoluteDeviationFunctions.State currentState = null; //initialize the state currentState = (MedianAbsoluteDeviationFunctions.State) run("OUTLIER_MAD_STATE_MERGE(states, NULL)", ImmutableMap.of("states", states)); for (int i = 0, j = 0; i < 10000; ++i, ++j) { Double d = gaussian.nextNormalizedDouble(); stats.addValue(d);//from w w w .j a v a2s . co m run("OUTLIER_MAD_ADD(currentState, data)", ImmutableMap.of("currentState", currentState, "data", d)); if (j >= 1000) { j = 0; List<MedianAbsoluteDeviationFunctions.State> stateWindow = new ArrayList<>(); for (int stateIndex = Math.max(0, states.size() - 5); stateIndex < states.size(); ++stateIndex) { stateWindow.add(states.get(stateIndex)); } currentState = (MedianAbsoluteDeviationFunctions.State) run( "OUTLIER_MAD_STATE_MERGE(states, currentState)", ImmutableMap.of("states", stateWindow, "currentState", currentState)); } } { Double score = (Double) run("OUTLIER_MAD_SCORE(currentState, value)", ImmutableMap.of("currentState", currentState, "value", stats.getMin())); Assert.assertTrue("Score: " + score + " is not an outlier despite being a minimum.", score > 3.5); } { Double score = (Double) run("OUTLIER_MAD_SCORE(currentState, value)", ImmutableMap.of("currentState", currentState, "value", stats.getMax())); Assert.assertTrue("Score: " + score + " is not an outlier despite being a maximum", score > 3.5); } { Double score = (Double) run("OUTLIER_MAD_SCORE(currentState, value)", ImmutableMap.of("currentState", currentState, "value", stats.getMean() + 4 * stats.getStandardDeviation())); Assert.assertTrue( "Score: " + score + " is not an outlier despite being 4 std deviations away from the mean", score > 3.5); } { Double score = (Double) run("OUTLIER_MAD_SCORE(currentState, value)", ImmutableMap.of("currentState", currentState, "value", stats.getMean() - 4 * stats.getStandardDeviation())); Assert.assertTrue( "Score: " + score + " is not an outlier despite being 4 std deviations away from the mean", score > 3.5); } { Double score = (Double) run("OUTLIER_MAD_SCORE(currentState, value)", ImmutableMap.of("currentState", currentState, "value", stats.getMean())); Assert.assertFalse("Score: " + score + " is an outlier despite being the mean", score > 3.5); } }
From source file:org.apache.metron.statistics.sampling.UniformSamplerTest.java
@BeforeClass public static void beforeClass() { Random rng = new Random(0); GaussianRandomGenerator gen = new GaussianRandomGenerator(new MersenneTwister(0)); for (int i = 0; i < SAMPLE_SIZE; ++i) { double us = 10 * rng.nextDouble(); uniformSample.add(us);//from www.j a v a 2 s . c o m uniformStats.addValue(us); double gs = 10 * gen.nextNormalizedDouble(); gaussianSample.add(gs); gaussianStats.addValue(gs); } }
From source file:org.apache.metron.statistics.StatisticalBinningPerformanceDriver.java
public static void main(String... argv) { DescriptiveStatistics perfStats = new DescriptiveStatistics(); OnlineStatisticsProvider statsProvider = new OnlineStatisticsProvider(); List<Double> values = new ArrayList<>(); GaussianRandomGenerator gaussian = new GaussianRandomGenerator(new MersenneTwister(0L)); for (int i = 0; i < NUM_DATA_POINTS; ++i) { //get the data point out of the [0,1] range double d = 1000 * gaussian.nextNormalizedDouble(); values.add(d);// w ww. ja va2 s.c o m statsProvider.addValue(d); } for (int perfRun = 0; perfRun < NUM_RUNS; ++perfRun) { StellarStatisticsFunctions.StatsBin bin = new StellarStatisticsFunctions.StatsBin(); long start = System.currentTimeMillis(); Random r = new Random(0); for (int i = 0; i < TRIALS_PER_RUN; ++i) { //grab a random value and fuzz it a bit so we make sure there's no cheating via caching in t-digest. bin.apply(ImmutableList.of(statsProvider, values.get(r.nextInt(values.size())) - 3.5, PERCENTILES)); } perfStats.addValue(System.currentTimeMillis() - start); } System.out.println("Min/25th/50th/75th/Max Milliseconds: " + perfStats.getMin() + " / " + perfStats.getPercentile(25) + " / " + perfStats.getPercentile(50) + " / " + perfStats.getPercentile(75) + " / " + perfStats.getMax()); }
From source file:org.apache.metron.statistics.StellarStatisticsFunctionsTest.java
@Test public void testMergeProviders() throws Exception { List<StatisticsProvider> providers = new ArrayList<>(); /*/*from w w w. jav a 2 s .c om*/ Create 10 providers, each with a sample drawn from a gaussian distribution. Update the reference stats from commons math to ensure we are */ GaussianRandomGenerator gaussian = new GaussianRandomGenerator(new MersenneTwister(1L)); SummaryStatistics sStatistics = new SummaryStatistics(); DescriptiveStatistics dStatistics = new DescriptiveStatistics(); for (int i = 0; i < 10; ++i) { List<Double> sample = new ArrayList<>(); for (int j = 0; j < 100; ++j) { double s = gaussian.nextNormalizedDouble(); sample.add(s); sStatistics.addValue(s); dStatistics.addValue(s); } StatisticsProvider provider = (StatisticsProvider) run( "STATS_ADD(STATS_INIT(), " + Joiner.on(",").join(sample) + ")", new HashMap<>()); providers.add(provider); } /* Merge the providers and validate */ Map<String, Object> providerVariables = new HashMap<>(); for (int i = 0; i < providers.size(); ++i) { providerVariables.put("provider_" + i, providers.get(i)); } StatisticsProvider mergedProvider = (StatisticsProvider) run( "STATS_MERGE([" + Joiner.on(",").join(providerVariables.keySet()) + "])", providerVariables); OnlineStatisticsProviderTest.validateStatisticsProvider(mergedProvider, sStatistics, dStatistics); }