Statistics & Probability Lab - Python & SageMath Codes
Experiment No. 8: Binomial & Normal Distributions
Q1: Machine Defect Binomial Distribution
# Import required libraries
import numpy as np
from [Link] import binom
# Define parameters
n = 8 # number of trials
p = 0.2 # probability of defect
k = 2 # number of successes (defective items)
# (a) PMF: P(X=k)
pmf_value = [Link](k, n, p)
print("Probability of getting exactly", k, "defective items:", pmf_value)
# (b) Mean Value
mean_value = [Link](n, p)
print("Mean of the binomial distribution:", mean_value)
# (b) Variance
variance_value = [Link](n, p)
print("Variance of the binomial distribution:", variance_value)
Q2: Normal Distribution Evaluation
# Import required libraries
import numpy as np
from [Link] import norm
# Define parameters
mu = 50
sigma = 10
x = 50
# (a) PDF at x
pdf_value = [Link](x, mu, sigma)
print("Probability density function at", x, ":", pdf_value)
# (b) CDF at x P(X<=50)
cdf_value = [Link](x, mu, sigma)
print("Cumulative distribution function at", x, ":", cdf_value)
Q3: Student Multiple-Choice Guessing
# Import required libraries
import numpy as np
import [Link] as plt
from [Link] import binom
# Define parameters
n = 12 # number of trials
p = 0.25 # probability of success
L = 3 # at most 3
m = 5 # at least 5
# (a) CDF: P(X<=L)
cdf_value = [Link](L, n, p)
print("Probability of getting at most", L, "correct answers:", cdf_value)
# (b) At least m successes: P(X>=m)
atleast_m_value = 1 - [Link](m - 1, n, p)
print("Probability of getting at least", m, "correct answers:", atleast_m_value)
# (c) Plotting PMF
x = [Link](0, n + 1)
pmf_vals = [Link](x, n, p)
[Link]()
[Link](x, pmf_vals)
[Link]("Number of correct answers")
[Link]("PMF")
[Link]("Binomial Distribution PMF")
[Link]()
Q4: Student Exam Marks Normal Distribution
# Import required libraries
import numpy as np
import [Link] as plt
from [Link] import norm
# Define parameters
mu = 70
sigma = 8
# (a) Find P(X <= 78)
cdf_value_1 = [Link](78, mu, sigma)
print("Cumulative distribution function P(X <= 78):", cdf_value_1)
# (b) Find P(60 <= X <= 80)
prob_between = [Link](80, mu, sigma) - [Link](60, mu, sigma)
print("Probability P(60 <= X <= 80):", prob_between)
# (c) Graphical Tools (PDF and CDF Plots)
x_vals = [Link](mu - 4*sigma, mu + 4*sigma, 400)
# PDF
pdf_vals = [Link](x_vals, mu, sigma)
[Link]()
[Link](x_vals, pdf_vals)
[Link]("Marks")
[Link]("PDF")
[Link]("Normal Distribution - PDF")
[Link]()
# CDF
cdf_vals = [Link](x_vals, mu, sigma)
[Link]()
[Link](x_vals, cdf_vals)
[Link]("Marks")
[Link]("CDF")
[Link]("Normal Distribution - CDF")
[Link]()
Q5: Factory Defective Bulbs Analysis
# Import required libraries
import numpy as np
import [Link] as plt
from [Link] import binom, norm
# Define parameters
n = 20
p = 0.1
k = 4
L = 5
# (a) (i) PMF: P(X=4)
pmf_value = [Link](k, n, p)
print("Probability of exactly", k, "defective bulbs:", pmf_value)
# (a) (ii) CDF: P(X<=5)
cdf_value = [Link](L, n, p)
print("Probability of at most", L, "defective bulbs:", cdf_value)
# (b) Statistics
mean_value = [Link](n, p)
variance_value = [Link](n, p)
std_deviation_value = [Link](n, p)
# (c) Compare binomial and normal results graphically
mu = mean_value
sigma = std_deviation_value
x_binom = [Link](0, n + 1)
pmf_vals = [Link](x_binom, n, p)
x_norm = [Link](0, n, 400)
pdf_vals = [Link](x_norm, mu, sigma)
[Link]()
[Link](x_binom, pmf_vals, label='Binomial PMF')
[Link](x_norm, pdf_vals, color='red', label='Normal PDF')
[Link]()
[Link]()
Experiment No. 7: Joint and Marginal Distributions
Problem 1
# f(x,y)=(x+y)/30
f(x,y) = (x+y)/30
joint_matrix = matrix(4, 3, [[f(x, y) for y in [0, 1, 2]] for x in [0, 1, 2, 3]])
marginal_X = [sum(row) for row in joint_matrix]
marginal_Y = [sum(col) for col in joint_matrix.columns()]
total_prob = sum(joint_matrix.list())
is_independent = all(joint_matrix[i, j] == marginal_X[i] * marginal_Y[j]
for i in range(len(marginal_X))
for j in range(len(marginal_Y)))
print(f"Are X and Y independent? {is_independent}")
Problem 2
# f(x,y)=(x+2y)/27
f(x,y) = (x+2*y)/27
joint_matrix = matrix(3, 3, [[f(x, y) for y in [0, 1, 2]] for x in [0, 1, 2]])
marginal_X = [sum(row) for row in joint_matrix]
marginal_Y = [sum(col) for col in joint_matrix.columns()]
total_prob = sum(joint_matrix.list())
is_independent = all(joint_matrix[i, j] == marginal_X[i] * marginal_Y[j]
for i in range(len(marginal_X))
for j in range(len(marginal_Y)))
print(f"Are X and Y independent? {is_independent}")
Problem 3
# f(x,y)=xy/36
f(x,y) = x*y/36
joint_matrix = matrix(3, 3, [[f(x, y) for y in [1, 2, 3]] for x in [1, 2, 3]])
marginal_X = [sum(row) for row in joint_matrix]
marginal_Y = [sum(col) for col in joint_matrix.columns()]
total_prob = sum(joint_matrix.list())
is_independent = all(joint_matrix[i, j] == marginal_X[i] * marginal_Y[j]
for i in range(len(marginal_X))
for j in range(len(marginal_Y)))
print(f"Are X and Y independent? {is_independent}")
Problem 4
# f(x,y)=(2x+y)/42
f(x,y) = (2*x+y)/42
joint_matrix = matrix(3, 4, [[f(x, y) for y in [0, 1, 2, 3]] for x in [0, 1, 2]])
marginal_X = [sum(row) for row in joint_matrix]
marginal_Y = [sum(col) for col in joint_matrix.columns()]
total_prob = sum(joint_matrix.list())
is_independent = all(joint_matrix[i, j] == marginal_X[i] * marginal_Y[j]
for i in range(len(marginal_X))
for j in range(len(marginal_Y)))
print(f"Are X and Y independent? {is_independent}")
Problem 5
# f(x,y)=xy/30
f(x,y) = x*y/30
joint_matrix = matrix(3, 4, [[f(x, y) for y in [1, 2, 3, 4]] for x in [0, 1, 2]])
marginal_X = [sum(row) for row in joint_matrix]
marginal_Y = [sum(col) for col in joint_matrix.columns()]
total_prob = sum(joint_matrix.list())
is_independent = all(joint_matrix[i, j] == marginal_X[i] * marginal_Y[j]
for i in range(len(marginal_X))
for j in range(len(marginal_Y)))
print(f"Are X and Y independent? {is_independent}")
Experiment No. 6: Statistical Parameters of Distributions
Set 1: Discrete and Continuous
# Q1: Discrete
X_vals = [0, 1, 2, 3, 4, 5]
P_vals = [0.18, 0.39, 0.24, 0.14, 0.04, 0.01]
ex = sum(x*p for x, p in zip(X_vals, P_vals))
ex2 = sum((x^2)*p for x, p in zip(X_vals, P_vals))
variance = ex2 - ex^2
sigma_x = sqrt(variance)
p_gt_1 = sum(P_vals[2:])
pmf_plot = points(zip(X_vals, P_vals), color='red', size=30)
pmf_plot += sum(line([(x, 0), (x, p)], color='blue', linestyle='--') for x, p in
zip(X_vals, P_vals))
pmf_plot.show()
# Q2: Continuous
f(x) = x/2
a, b = 0, 2
total_prob = integral(f(x), x, a, b)
ex = integral(x * f(x), x, a, b)
ex_transformed = integral((3*x + 5) * f(x), x, a, b)
Set 2: Discrete and Continuous
# Q1: Discrete
X_vals = [0, 1, 2, 3, 4, 5]
P_vals = [0.10, 0.15, 0.30, 0.20, 0.15, 0.10]
ex = sum(x*p for x, p in zip(X_vals, P_vals))
ex2 = sum((x^2)*p for x, p in zip(X_vals, P_vals))
variance = ex2 - ex^2
p_gt_2 = sum(P_vals[3:])
# Q2: Continuous
f(x) = 3*x^2
a, b = 0, 1
total_prob = integral(f(x), x, a, b)
ex = integral(x * f(x), x, a, b)
ex_2x = integral((2*x) * f(x), x, a, b)
Set 3: Discrete and Continuous
# Q1: Discrete
X_vals = [1, 2, 3, 4, 5]
P_vals = [0.05, 0.09, 0.03, 0.42, 0.41]
ex = sum(x*p for x, p in zip(X_vals, P_vals))
ex2 = sum((x^2)*p for x, p in zip(X_vals, P_vals))
variance = ex2 - ex^2
p_lt_4 = sum(P_vals[:3])
# Q2: Continuous
f(x) = (4/81)*x*(9 - x^2)
a, b = 0, 3
total_prob = integral(f(x), x, a, b)
ex = integral(x * f(x), x, a, b)
ex2 = integral(x^2 * f(x), x, a, b)
Set 4: Discrete and Continuous
# Q1: Discrete
X_vals = [0, 1, 2, 3, 4, 5]
P_vals = [0.18, 0.39, 0.24, 0.14, 0.04, 0.01]
ex = sum(x*p for x, p in zip(X_vals, P_vals))
ex2 = sum((x^2)*p for x, p in zip(X_vals, P_vals))
variance = ex2 - ex^2
sigma_x = sqrt(variance)
PX_gt_1 = sum(P_vals[2:])
# Q2: Continuous
f(x) = 1/20
a, b = 20, 40
total_prob = integral(f(x), x, a, b)
ex = integral(x * f(x), x, a, b)
Set 5: Discrete and Continuous
# Q1: Discrete
X_vals = [1, 2, 3, 4, 5, 6]
P_vals = [0.41, 0.30, 0.14, 0.11, 0.03, 0.01]
ex = sum(x*p for x, p in zip(X_vals, P_vals))
ex2 = sum((x^2)*p for x, p in zip(X_vals, P_vals))
variance = ex2 - ex^2
sigma_x = sqrt(variance)
PX_le_4 = sum(P_vals[:4])
# Q2: Continuous
var('x')
f(x) = (2*x + 3)/18
a, b = 2, 4
total_prob = integral(f(x), x, a, b)
ex = integral(x * f(x), x, a, b)
ex2 = integral(x^2 * f(x), x, a, b)
pdf_plot = plot(f(x), (x, a, b), color='blue', fill=True, alpha=0.3)
mean_line = line([(ex, 0), (ex, f(ex))], color='green', linestyle='--', thickness=2)
(pdf_plot + mean_line).show()
Common Syntaxes Reference
# --- DISCRETE DISTRIBUTIONS ---
ex = sum(x*p for x, p in zip(X_vals, P_vals)) # Expectation / Mean
ex2 = sum((x^2)*p for x, p in zip(X_vals, P_vals)) # E(X^2)
variance = ex2 - ex^2 # Variance
# --- CONTINUOUS DISTRIBUTIONS ---
total_prob = integral(f(x), x, a, b) # Check if PDF sums to 1
ex = integral(x * f(x), x, a, b) # Expectation / Mean
# --- JOINT MATRICES ---
# Create Matrix
matrix(rows, cols, [[f(x,y) for y in Y] for x in X])
# Marginals
marginal_X = [sum(row) for row in joint_matrix]
marginal_Y = [sum(col) for col in joint_matrix.columns()]
# --- SCIPY BINOMIAL/NORMAL ---
[Link](k, n, p) # P(X = k)
[Link](k, n, p) # P(X <= k)
[Link](x, mu, sigma) # PDF
[Link](x, mu, sigma) # CDF