correlated variable monte carlo simulations
• Example • API • Notes • License
import SIM from '../sim.js'
const res = SIM(
(_,
// initiation ran once
fixed$ = _`600_000 900_000 [0 demand:0.6 price:0.3`,
month$ = _`5,000 7,000 demand:0.5 season:0.5`,
months = _`6 9 [1 season:0.5 price:-0.5`
)=>(
// calculations on every iterations
total$ = fixed$ + month$ * months
)=>({
// exported results
months,
month$,
total$
})
).run(10_000)
//console.log(res.buffer)
const stats=res.stats
console.log('total$ range', stats.total$.Q(0.1).toFixed(0), stats.total$.Q(0.9).toFixed(0))
console.log('correlation', stats.total$.cor('months'))
-
factory:
randomVariableFactory => model
-
randomVariableFactory: taggedTemplate
low high [min med max] {riskName:40%}, ...correlation)
=>randomVariable
to match the simulation confidence interval. The string is parsed to match themetanorm
arguments -
randomVariable: with
.valueOf()
that changes on each iteration -
simulation
-
stats: empirical distribution cdf, pdf, quantiles, average (based on modules
sample-distribution
andlazy-stats
)
-
stats: empirical distribution cdf, pdf, quantiles, average (based on modules
- use case is human approximation in decision making - "guesstimates"
- default is to use a confidence interval of 80%
- variables can be correlated with independent risk factors by providing the linear factor
- to maintain correlation, each variable returns a single value per cycle - random variables are constant within a given cycle