The normal distribution helps us understand how data spreads around an average value. It is useful because many natural things follow this pattern.
Normal distribution in SciPy
from scipy.stats import norm # Create a normal distribution object norm(loc=mean, scale=std_dev) # Calculate probability density function (PDF) at x pdf_value = norm.pdf(x, loc=mean, scale=std_dev) # Calculate cumulative distribution function (CDF) at x cdf_value = norm.cdf(x, loc=mean, scale=std_dev) # Generate random samples samples = norm.rvs(loc=mean, scale=std_dev, size=n)
loc is the mean (center) of the distribution.
scale is the standard deviation (spread) of the distribution.
from scipy.stats import norm # Standard normal distribution (mean=0, std=1) pdf_at_0 = norm.pdf(0) cdf_at_1 = norm.cdf(1)
from scipy.stats import norm # Normal distribution with mean=10 and std=2 pdf_at_12 = norm.pdf(12, loc=10, scale=2) cdf_at_8 = norm.cdf(8, loc=10, scale=2)
from scipy.stats import norm # Generate 5 random samples from N(5, 1.5) samples = norm.rvs(loc=5, scale=1.5, size=5) print(samples)
This program calculates the probability density at 55 and cumulative probability up to 45 for a normal distribution with mean 50 and standard deviation 5. It also generates 10 random samples from this distribution.
from scipy.stats import norm # Define mean and standard deviation mean = 50 std_dev = 5 # Calculate PDF at 55 pdf_55 = norm.pdf(55, loc=mean, scale=std_dev) # Calculate CDF at 45 cdf_45 = norm.cdf(45, loc=mean, scale=std_dev) # Generate 10 random samples samples = norm.rvs(loc=mean, scale=std_dev, size=10) print(f"PDF at 55: {pdf_55:.4f}") print(f"CDF at 45: {cdf_45:.4f}") print("Random samples:") print(samples)
The PDF value shows how likely a specific value is, but it is not a probability itself.
The CDF value shows the probability that a value is less than or equal to a point.
Random samples help simulate real data following the normal pattern.
The normal distribution models data around an average with a certain spread.
Use norm.pdf to find how dense the data is at a point.
Use norm.cdf to find the probability of data being below a point.
Practice
Solution
Step 1: Understand the normal distribution concept
The normal distribution describes how data points are spread around a central average (mean).Step 2: Identify the correct description
Among the options, only data spread around an average matches the normal distribution's purpose.Final Answer:
Data spread around an average value -> Option DQuick Check:
Normal distribution = data around average [OK]
- Thinking normal distribution only has positive values
- Confusing normal distribution with sorted data
- Assuming no variation in normal distribution
Solution
Step 1: Recall scipy.stats import syntax
The normal distribution functions are in scipy.stats under the name 'norm'.Step 2: Match correct import statement
Only 'from scipy.stats import norm' correctly imports the normal distribution functions.Final Answer:
from scipy.stats import norm -> Option BQuick Check:
Correct import = from scipy.stats import norm [OK]
- Using 'import scipy.norm' which does not exist
- Trying 'from scipy import normal' which is incorrect
- Importing 'stats.norm' without scipy prefix
from scipy.stats import norm result = norm.cdf(0, loc=0, scale=1) print(round(result, 2))
Solution
Step 1: Understand norm.cdf at mean
norm.cdf(x, loc, scale) gives the probability data is less than x. At x=0 with mean=0, scale=1, it is the 50th percentile.Step 2: Calculate and round the result
The cumulative probability at mean is 0.5, rounding to 2 decimals gives 0.50.Final Answer:
0.50 -> Option CQuick Check:
norm.cdf(mean) = 0.5 [OK]
- Confusing PDF with CDF values
- Expecting 0 or 1 instead of 0.5 at mean
- Rounding errors ignoring decimals
from scipy.stats import norm prob = norm.pdf(1, mean=0, scale=1) print(prob)
Solution
Step 1: Check parameter names for norm.pdf
norm.pdf uses 'loc' for mean, not 'mean'. Using 'mean' causes an error.Step 2: Identify correct parameter
Replace 'mean=0' with 'loc=0' to fix the code.Final Answer:
Parameter 'mean' should be 'loc' -> Option AQuick Check:
Use loc for mean in norm functions [OK]
- Using 'mean' instead of 'loc' parameter
- Assuming norm.pdf is missing
- Thinking scale must be integer
Solution
Step 1: Identify the function for cumulative probability
To find probability less than a value, use norm.cdf with the value, mean (loc), and std dev (scale).Step 2: Match parameters to the problem
Value is 13, mean is 10, std dev is 2, so norm.cdf(13, loc=10, scale=2) is correct.Final Answer:
norm.cdf(13, loc=10, scale=2) -> Option AQuick Check:
Use norm.cdf(value, loc=mean, scale=std) [OK]
- Using norm.pdf instead of norm.cdf
- Swapping loc and value parameters
- Using norm.sf which gives probability greater than value
Ready to prove it?
Pass the test and this pattern moves unknown
