0% found this document useful (0 votes)
6 views9 pages

Statistics and Probability Lab Codes

The document contains Python and SageMath code for various statistical experiments, including binomial and normal distributions, joint and marginal distributions, and statistical parameters of distributions. It covers calculations such as probability mass functions (PMF), cumulative distribution functions (CDF), means, variances, and graphical representations. Additionally, it provides a reference for common syntaxes used in discrete and continuous distributions.
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
6 views9 pages

Statistics and Probability Lab Codes

The document contains Python and SageMath code for various statistical experiments, including binomial and normal distributions, joint and marginal distributions, and statistical parameters of distributions. It covers calculations such as probability mass functions (PMF), cumulative distribution functions (CDF), means, variances, and graphical representations. Additionally, it provides a reference for common syntaxes used in discrete and continuous distributions.
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

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

You might also like