Open bwengals opened 3 months ago
This is awesome! Our users are definitively not experts in GPs; having suitable default priors is key 🙏! I'll take a look into the PR this week!
Thanks for bringing your expertise to the package 🙌
Sure thanks @juanitorduz, the PR is quite bad, so forgive me on that. In my mind the first step is, does this proposal sound good? and then step 2 is how to implement it. The PR, mostly the notebook, is more to demonstrate that this works alright.
Also tagging @ulfaslak since this got kickstarted by a discussion we had.
@bwengals I really like the proposal, and from my side, it is a key addition to the model! I especially like how the out-of-sample -prediction looks in the notebook. 💪
I suggest we work on step (2). One thing we need to keep in mind is what the default parameters should be when the optimization step in the find-constrained-prior fails. We can have a simple heuristic.
Please let me know how we can support you (besides the reviews) to work on the PR.
@wd60622 @ulfaslak any other thoughts from your side?
I think some of the TVP fits in the TVP notebook can be improved by using different priors on the GP.
Basically, I'd propose to:
mu
andsigma
or the upper and lower tail probabilities and mass, a lapm.find_constrained_prior
.m
andc
to match the prior given to the lengthscale. This will require assuming how far into the future the user wants to make predictions. If the user wants reliable predictions further into the future, they will need to specify the number of days they need.The main idea is to use the PC prior for the GP scale (
eta
) and lengthscale (ls
) as the default prior. I think this could potentially be done using the data and without any user input. The PC prior is derived as joint prior. It works out to be an Exponential on eta and a Frechet or inverse Weibull on the lengthscale.PC priors are not uninformative, so the user potentially needs to set two tail probabilities:
Then, if the user has more prior knowledge about the lengthscale, the InverseGamma prior becomes a good choice.
What do people think about setting sensible defaults for the scale and the lengthscale using just the data, or should the user be forced to make a choice? Any guidance on the implementation would be greatly appreciated.