How do I calculate PDF (probability density function) in Python?

前端 未结 3 1086
故里飘歌
故里飘歌 2021-02-06 05:07

I have the following code below that prints the PDF graph for a particular mean and standard deviation.

http://imgur.com/a/oVgML

Now I need to find the actual pr

相关标签:
3条回答
  • 2021-02-06 05:38

    Unless you have a reason to implement this yourself. All these functions are available in scipy.stats.norm

    I think you asking for the cdf, then use this code:

    from scipy.stats import norm
    print(norm.cdf(x, mean, std))
    
    0 讨论(0)
  • 2021-02-06 05:40

    The area under a curve y = f(x) from x = a to x = b is the same as the integral of f(x)dx from x = a to x = b. Scipy has a quick easy way to do integrals. And just so you understand, the probability of finding a single point in that area cannot be one because the idea is that the total area under the curve is one (unless MAYBE it's a delta function). So you should get 0 ≤ probability of value < 1 for any particular value of interest. There may be different ways of doing it, but a conventional way is to assign confidence intervals along the x-axis like this. I would read up on Gaussian curves and normalization before continuing to code it.

    0 讨论(0)
  • 2021-02-06 05:47

    If you want to write it from scratch:

    class PDF():
        def __init__(self,mu=0, sigma=1):
            self.mean = mu
            self.stdev = sigma
            self.data = []
    
        def calculate_mean(self):
            self.mean = sum(self.data) // len(self.data)
            return self.mean
    
        def calculate_stdev(self,sample=True):
            if sample:
                n = len(self.data)-1
            else:
                n = len(self.data)
            mean = self.mean
            sigma = 0
            for el in self.data:
                sigma += (el - mean)**2
            sigma = math.sqrt(sigma / n)
            self.stdev = sigma
            return self.stdev
    
        def pdf(self, x):
            return (1.0 / (self.stdev * math.sqrt(2*math.pi))) * math.exp(-0.5*((x - self.mean) / self.stdev) ** 2)
    
    
    
    
    0 讨论(0)
提交回复
热议问题