Bird
Raised Fist0
SciPydata~5 mins

Probability density and cumulative functions in SciPy

Choose your learning style10 modes available
Introduction

We use probability density and cumulative functions to understand how likely values are in a range and how probabilities add up over that range.

To find how likely a specific value or range of values is in data.
To calculate the chance that a value is less than or equal to a certain number.
To visualize the shape of data distribution.
To compare different data distributions.
To make decisions based on probabilities in real-life events like weather or quality control.
Syntax
SciPy
from scipy.stats import distribution_name

# Probability Density Function (PDF)
pdf_value = distribution_name.pdf(x, *params)

# Cumulative Distribution Function (CDF)
cdf_value = distribution_name.cdf(x, *params)

distribution_name is the name of the distribution like norm (normal), expon (exponential), etc.

x is the value or array of values where you want to calculate the function.

Examples
This calculates the probability density at 0 for a normal distribution with mean 0 and standard deviation 1.
SciPy
from scipy.stats import norm

# PDF at x=0 for standard normal distribution
pdf_val = norm.pdf(0)
This calculates the probability that a value is less than or equal to 1 in the standard normal distribution.
SciPy
from scipy.stats import norm

# CDF at x=1 for standard normal distribution
cdf_val = norm.cdf(1)
This finds the density at 2 for an exponential distribution where the average rate is 1.
SciPy
from scipy.stats import expon

# PDF at x=2 for exponential distribution with scale=1
pdf_val = expon.pdf(2, scale=1)
Sample Program

This program calculates and prints the PDF and CDF values at 0 for a normal distribution. It also plots the PDF and CDF curves from -3 to 3 to show how probabilities are distributed and accumulated.

SciPy
from scipy.stats import norm
import numpy as np
import matplotlib.pyplot as plt

# Values from -3 to 3
x = np.linspace(-3, 3, 100)

# Calculate PDF and CDF for standard normal distribution
pdf = norm.pdf(x)
cdf = norm.cdf(x)

# Print some values
print(f"PDF at 0: {norm.pdf(0):.4f}")
print(f"CDF at 0: {norm.cdf(0):.4f}")

# Plot PDF and CDF
plt.plot(x, pdf, label='PDF')
plt.plot(x, cdf, label='CDF')
plt.title('Normal Distribution PDF and CDF')
plt.xlabel('x')
plt.ylabel('Probability')
plt.legend()
plt.grid(True)
plt.show()
OutputSuccess
Important Notes

PDF values are not probabilities themselves but densities; they can be greater than 1.

CDF values always range from 0 to 1 and show cumulative probability up to x.

Use the same parameters for PDF and CDF to compare correctly.

Summary

PDF shows how dense or likely values are at specific points.

CDF shows the total probability up to a point.

Both help understand and work with data distributions.

Practice

(1/5)
1. What does the Probability Density Function (PDF) represent in a data distribution?
easy
A. The average value of the data
B. The likelihood of a value occurring at a specific point
C. The total probability up to a certain value
D. The maximum value in the data

Solution

  1. Step 1: Understand PDF meaning

    The PDF shows how dense or likely values are at specific points in a distribution.
  2. Step 2: Differentiate from CDF

    The CDF shows total probability up to a point, not the likelihood at a point.
  3. Final Answer:

    The likelihood of a value occurring at a specific point -> Option B
  4. Quick Check:

    PDF = Likelihood at point [OK]
Hint: PDF shows likelihood at exact points, not cumulative [OK]
Common Mistakes:
  • Confusing PDF with CDF
  • Thinking PDF gives total probability
  • Assuming PDF gives average or max value
2. Which of the following is the correct way to import the cumulative distribution function (CDF) for a normal distribution from scipy.stats?
easy
A. import norm from scipy.stats; norm.cdf(x)
B. import scipy.stats.norm as norm; norm.cdf(x)
C. from scipy import norm; norm.cdf(x)
D. from scipy.stats import norm; norm.cdf(x)

Solution

  1. Step 1: Recall scipy.stats import syntax

    The correct import for normal distribution functions is from scipy.stats import norm.
  2. Step 2: Use norm.cdf(x) to get CDF

    After import, norm.cdf(x) computes the cumulative distribution function at x.
  3. Final Answer:

    from scipy.stats import norm; norm.cdf(x) -> Option D
  4. Quick Check:

    Correct import and usage = from scipy.stats import norm; norm.cdf(x) [OK]
Hint: Use 'from scipy.stats import norm' for normal distribution functions [OK]
Common Mistakes:
  • Wrong import syntax causing errors
  • Using 'import scipy.stats.norm as norm' which is invalid
  • Trying to import norm directly from scipy
3. What is the output of the following code snippet?
from scipy.stats import norm
result = norm.pdf(0, loc=0, scale=1)
print(round(result, 3))
medium
A. 0.399
B. 0.500
C. 1.000
D. 0.000

Solution

  1. Step 1: Understand norm.pdf at mean

    For a normal distribution with mean 0 and std 1, PDF at 0 is 1/sqrt(2*pi) ≈ 0.3989.
  2. Step 2: Round the result

    Rounding 0.3989 to 3 decimals gives 0.399.
  3. Final Answer:

    0.399 -> Option A
  4. Quick Check:

    PDF at mean = 0.399 [OK]
Hint: PDF at mean of standard normal ≈ 0.399 [OK]
Common Mistakes:
  • Confusing PDF with CDF value
  • Rounding incorrectly
  • Assuming PDF at mean is 0.5
4. Identify the error in this code that tries to calculate the CDF of a normal distribution at x=1:
import scipy.stats as stats
cdf_value = stats.norm.pdf(1, loc=0, scale=1)
print(cdf_value)
medium
A. Using pdf() instead of cdf() to get cumulative probability
B. Missing import statement for norm
C. Incorrect parameters for norm.pdf
D. Syntax error in print statement

Solution

  1. Step 1: Check function used for CDF calculation

    The code uses norm.pdf which gives probability density, not cumulative probability.
  2. Step 2: Correct function for cumulative probability

    To get cumulative probability, norm.cdf should be used instead of norm.pdf.
  3. Final Answer:

    Using pdf() instead of cdf() to get cumulative probability -> Option A
  4. Quick Check:

    Use cdf() for cumulative probability [OK]
Hint: Use cdf() for cumulative, pdf() for density [OK]
Common Mistakes:
  • Mixing pdf and cdf functions
  • Assuming pdf returns cumulative values
  • Ignoring function purpose
5. You have a dataset of exam scores that roughly follow a normal distribution with mean 70 and standard deviation 10. Using scipy, how would you find the probability that a student scored less than 85?
hard
A. Use norm.cdf(70, loc=85, scale=10) to get cumulative probability
B. Use norm.pdf(85, loc=70, scale=10) to get cumulative probability
C. Use norm.cdf(85, loc=70, scale=10) to get cumulative probability
D. Use norm.pdf(70, loc=85, scale=10) to get cumulative probability

Solution

  1. Step 1: Identify correct function for cumulative probability

    To find probability of scoring less than 85, use the cumulative distribution function norm.cdf.
  2. Step 2: Use correct parameters for mean and std

    Set loc=70 (mean) and scale=10 (std deviation), and evaluate at 85.
  3. Final Answer:

    Use norm.cdf(85, loc=70, scale=10) to get cumulative probability -> Option C
  4. Quick Check:

    norm.cdf(value, loc=mean, scale=std) = cumulative probability [OK]
Hint: CDF with loc=mean, scale=std, value=threshold [OK]
Common Mistakes:
  • Using pdf instead of cdf for cumulative probability
  • Swapping mean and value parameters
  • Confusing scale with loc
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard