5. Post AnalysisΒΆ
The output of an inference scheme is a Journal
(abcpy.output.Journal
) which holds all the necessary results and
convenient methods to do the post analysis.
For example, one can easily access the sampled parameters and corresponding weights using:
journal.get_parameters()
journal.get_weights()
The output of get_parameters() is a Python dictionary. The keys for this dictionary are the names you specified for the parameters. The corresponding values are the marginal posterior samples of that parameter. Here is a short example of what you would specify, and what would be the output in the end:
a = Normal([[1],[0.1]], name='parameter_1')
b = MultivariateNormal([[1,1],[[0.1,0],[0,0.1]]], name='parameter_2')
If one defined a model with these two parameters as inputs and n_sample=2, the following would be the output of journal.get_parameters():
{'parameter_1' : [[0.95],[0.97]], 'parameter_2': [[0.98,1.03],[1.06,0.92]]}
These are samples at the final step of ABC algorithm. If you want samples from the earlier steps you can get a Python dictionary for that step by using:
journal.get_parameters(step_number)
Since this is a dictionary, you can also access the values for each step as:
journal.get_parameters(step_number)["name"]
For the post analysis basic functions are provided:
# do post analysis
journal.posterior_mean()
journal.posterior_cov()
journal.posterior_histogram()
Also, to ensure reproducibility, every journal stores the parameters of the algorithm that created it:
print(journal.configuration)
And certainly, a journal can easily be saved to and loaded from disk:
journal.save("experiments.jnl")
new_journal = Journal.fromFile('experiments.jnl')