-
Notifications
You must be signed in to change notification settings - Fork 22
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Variable rate observations #243
Comments
There is multiple things one might want to do. Let's use an example, maybe it's easier to reason about which parts we want to do inference. The physical system consists of a radioactive material that randomly emits energetic particles, and an object that is heated up by them. The temperature of the object is measured by a noisy sensor. We can model this system as follows: avgEnergy = 10
-- Assuming some positive distribution for the energy
material = constMCl $ gamma 1 avgEnergy
sensorNoise = 1
sensor = arrM $ \energy -> (energy +) <$> normal 0 sensorNoise
modelRhine poissonClock = material @@ poissonClock >-- collect --> arr sum >-> sumS >-> sensor @@ SensorClock
Now the real world observation will be more like: constM getMeasurements @@ sensorClockIO
What might one want to estimate here? You could estimate e.g. the rate of the Poisson process or the average energy using PMMH or so, but we have not specified where the prior for the clock enters the model. In the WIP PR for Poisson clocks, the rate is part of the clock value, so it has to be drawn before building up the whole mkPoissonClock :: MonadDistribution m => m PoissonClock
mkPoissonClock = PoissonClock <$> somePrior
runModel = sampleIO $ do
poissonClock <- mkPoissonClock
flow $ modelRhine poissonClock So to estimate the parameter, one would have to do PMMH (#242) or similar. But I think the inference part would run on This does not work anymore if the Poisson clock or a corresponding clock (say, a real world Geiger counter accessed via Now let's say that, instead of a parameter, you want to estimate an internal state of the object, say, the total energy. You'd still need to sample the parameters in some way (or jointly do inference on them), and I guess you'd still do clock erasure on the whole model, and only score with the sensor data. This is different when you'd like to estimate some state of the running clock, say, the number of radioactive particles emitted. |
It would be nice to have a demo of object tracking where the observations arrive on a Poisson process clock. This shouldn't be super hard for me to do, right? Something like:
The text was updated successfully, but these errors were encountered: