From: Paul Hobson <pmhobson@gmail.com>
Hmm. I don't think scipy needs to know about your distribution per se. You
Thanks for sharing your thoughts, Paul. I finally found the way to go. As you mention, the parameter "dist" is wher one needs to specify our own distribution. The key is to give it without quotes. Here is a working example: import matplotlib.pyplot as plt #prefer this import numpy as np from scipy import stats class mydist(object): def pdf(x): "define and return the pdf" return stats.norm.pdf(x) def cdf(x): "define and return the cdf" return stats.norm.cdf(x) def ppf(x): "define and return the ppf" return stats.norm.ppf(x) mymean = 1.0 myvar = 1.0 n = 5000 colData = np.random.normal(mymean, myvar, n) """ It took me a while to realize that the quotes surrounding the distribution should not be there when using a user defined one """ print(' ProbPlot using system norm ') res = stats.probplot(colData, dist="norm", plot=plt, rvalue=True) plt.show() # To use our own defined distribution remove the quotes around the name: print(' ProbPlot using my redefined system norm ') res = stats.probplot(colData, dist=mydist, plot=plt, rvalue=True) plt.show() Sergio ------------------------------ Message: 2 Date: Thu, 5 Jul 2018 00:11:52 -0700 From: Paul Hobson <pmhobson@gmail.com> To: SciPy Users List <scipy-user@python.org> Subject: Re: [SciPy-User] Q: on scipy probplot user defined distribution function Message-ID: <CADT3MEANHqw+w_+acbp9U6H1QqdhLOY9Ei1LK430we5+Wo1eyA@mail.gmail.com> Content-Type: text/plain; charset="utf-8" Hmm. I don't think scipy needs to know about your distribution per se. You just need to be able to pass it to the probplot function via the `dist` parameter. Per the docs ( https://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.stats.probplot.html[https://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.stats.probplot.html] ): scipy.stats.probplot(*x*, *sparams=()*, *dist='norm'*, *fit=True*, *plot=None*)[source] <http://github.com/scipy/scipy/blob/v0.14.0/scipy/stats/morestats.py#L296[http://github.com/scipy/scipy/blob/v0.14.0/scipy/stats/morestats.py#L296]> [snip] *dist* : str or stats.distributions instance, optional Distribution or distribution function name. The default is ?norm? for a normal probability plot. Objects that look enough like a stats.distributions instance (i.e. they have a ppf method) are also accepted. [snip] On Wed, Jul 4, 2018 at 12:19 PM Sergio Rojas <sergio_r@mail.com> wrote:
Here's an example of using different distributions with the mpl-probscale package:
-Paul
Thanks, Paul. I guess I might need to build a <dist>.pdf, .cdf, and .ppf files for my distribution. What is not clear is how to specify the alternative directory to make them available to scipy
On Mon, Jul 2, 2018 at 11:40 AM Sergio Rojas <sergio_r@mail.com> wrote:
Hello folks,
How can one specify our own (user made) probability distribution function to scipy.stats.probplot ?
Can it be done is the pdf used is not in a closed form function (meaning that the random drawings comes from a numerical procedure)?
Salut,
Sergio _______________________________________________ SciPy-User mailing list SciPy-User@python.org