SciML / QuasiMonteCarlo.jl

Lightweight and easy generation of quasi-Monte Carlo sequences with a ton of different methods on one API for easy parameter exploration in scientific machine learning (SciML)
https://docs.sciml.ai/QuasiMonteCarlo/stable/
MIT License
103 stars 26 forks source link

Estimators and Statistics for RQMC Integraiton #89

Open ParadaCarleton opened 1 year ago

ParadaCarleton commented 1 year ago

Using this issue to keep track of estimators we may want to implement.

dmetivie commented 1 year ago

I don't know about Control variate and control functional. However, I can help on the first two boxes! In fact, we just release v3 of our work The Robust Randomized Quasi Monte Carlo method, applications to integrating singular functions. We basically combine Robust estimator (not just median of mean). We discuss briefly the Pan, Owen paper you linked in Section 5.

ParadaCarleton commented 1 year ago
  • I don't think this QMC package should host robust estimator, but only focus on QMC. In fact, I developed the package RobustMeans.jl that does exactly that!

Maybe we should create a separate package called something like QMCIntegrals.jl? It could include things like robust RQMC and control variates.

Control variates just means reducing the variance by using a known quantity x_true to adjust our estimate of the outcome y. We do a linear regression of x_observed on y_observed to get a coefficient c; then we adjust our estimate of f(x) by controlling for the error in x, i.e. x_observed - x_true, which lets us subtract off the error in our estimate of y caused by the error in our estimate of x.

It works the same with RQMC, we just need to use the correlation calculated by using the independent batches of x .

dmetivie commented 1 year ago

Maybe we should create a separate package called something like QMCIntegrals.jl? It could include things like robust RQMC and control variates.

Good idea! I actually prefer having a separate package for people to implement fancy control variate or other methods rather than a big "all in one" package (like qmcpy). I believe it more Julian way to do ? We could also include discrepancy measures and the istmsnet that we defined in the runtest.jl file.

I don't have currently much time for this new package, as I have to move to other projects for now! About the name here is my try QuasiMonteCarloTools.jl ?

ChrisRackauckas commented 1 year ago

Maybe we should create a separate package called something like QMCIntegrals.jl? It could include things like robust RQMC and control variates.

That would be great to see. Make sure it has an Integrals.jl hook so that it matches the other algorithms and is easy to swap to. I've been wanting a pure Julia higher dimensional integral method so that way when we are using weird number types and such it's easy to swap to it.