lazhen
2025-01-09 8afe90b633046db39042aada36b88193062f8cff
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Quintiq file version 2.0
#parent: #root
Method TestScriptComputeMeanVarianceUsingQuantileBySampling (
  ProbabilityDistribution distr,
  String node_r,
  String period_r,
  String functionname
)
{
  TextBody:
  [*
    timestart := OS::PrecisionCounter()
    
    nrsamples := 100; 
    
    xsum_Q := 0.0; 
    xsqrsum_Q := 0.0; 
    for ( i := 1; i <= nrsamples; i++ ) 
    {
      u := Real::Random( 0.0, 1.0); 
    
      fromquant := distr.Quantile( u ); 
      xsum_Q := xsum_Q + fromquant; 
      xsqrsum_Q := xsqrsum_Q + (fromquant * fromquant ); 
    }
    
    timeend := OS::PrecisionCounter(); 
    timeusedsec := (timeend - timestart) / OS::PrecisionCounterFrequency() 
    info( 'time used to compute from samples = ', timeusedsec, 's' ); 
    sample_mean_Q := xsum_Q / nrsamples
    sample_sqr_mean_Q := xsqrsum_Q / nrsamples; 
    info( 'Q sample mean', sample_mean_Q ); 
    info( 'Q sample ^2 mean',  sample_sqr_mean_Q); 
    info( 'Q sample variance ', sample_sqr_mean_Q - (sample_mean_Q*sample_mean_Q) );
  *]
}