db = pm.backends.Text('save1')
trace = pm.sample(3000,step=step,start=start,trace=db)
I used this to load it within the context of my model:
with pm.Model() as model:
test=pm.backends.text.load('save1')
and it worked, since test is recognized as variable : <MultiTrace: 1 chains, 3500 iterations, 0 variables> (not sure why it says 0 variables, since they are listed in the .csv file, but anyway).
Nevertheless, when I do this: pm.summary(test), nothing happens.
And when I try this: pm.traceplot(test), I get IndexError: index out of range in gridspec.py, a matplotlib function.
Any idea on how to get the summary and traceplot from there?
I just read somewhere in the docs that Pickle should not be used for long-term project because the format itself changes often and gets deprecated faster, so I did not chose it.
But it’s definitely a better option? Because as for me, a CSV seems pretty simple yet robust…what will pickle bring instead?
I would say only pickling the trace as an intermedia step, and functions operating on the trace should work as intended (e.g., traceplot, sample_ppc etc). But you are right it is indeed better to save the trace as a CSV (for final report or paper), which you can do so by pm.trace_to_dataframe(trace).
But if you use pm.trace_to_dataframe(trace), and then pickle the dataframe (say), how do you recover the trace from the dataframe in a form from which you can do a traceplot?
I think the best way is to use https://github.com/arviz-devs/arviz
We are currently separating the plotting and statistics module from PyMC3 into a general library, potentially for varies python Bayesian packages like pystan, pyro, edward etc (great work mostly done by @aloctavodia and @colcarroll). The aim is to have something similar to bayesplot or coda in R