-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathAdvanced_Probability_Calculator.py
More file actions
114 lines (92 loc) · 4.18 KB
/
Advanced_Probability_Calculator.py
File metadata and controls
114 lines (92 loc) · 4.18 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
from decimal import Decimal, getcontext
from multiprocessing import Pool
import math
from statistics import mean, stdev
from sklearn.linear_model import LinearRegression
import numpy as np
# Set precision to 200 decimal places
getcontext().prec = 200
class AdvancedProbabilityCalculator:
def __init__(self):
pass
# 1. Basic Probability Calculation
def calculate_basic_probability(self, favorable_outcomes, total_outcomes):
if total_outcomes == 0:
raise ValueError("Total outcomes cannot be zero.")
return Decimal(favorable_outcomes) / Decimal(total_outcomes)
# 2. Gaussian Distribution
def calculate_gaussian_distribution(self, x, mean, std_dev):
coefficient = Decimal(1) / (Decimal(std_dev) * Decimal(math.sqrt(2 * math.pi)))
exponent = Decimal(-0.5) * ((Decimal(x) - Decimal(mean)) / Decimal(std_dev)) ** 2
return coefficient * Decimal(math.exp(exponent))
# 3. Binomial Distribution
def calculate_binomial_distribution(self, n, k, p):
if not (0 <= p <= 1):
raise ValueError("Probability p must be between 0 and 1.")
combination = math.comb(n, k)
return Decimal(combination) * (Decimal(p) ** k) * (Decimal(1 - p) ** (n - k))
# 4. Conditional Probability
def calculate_conditional_probability(self, p_a_and_b, p_b):
if p_b == 0:
raise ValueError("P(B) cannot be zero.")
return Decimal(p_a_and_b) / Decimal(p_b)
# 5. Predictive Analysis
def calculate_predictive_analysis(self, data):
if not data:
raise ValueError("Data cannot be empty.")
return mean(data)
# 6. Risk Assessment
def calculate_risk_assessment(self, data):
if len(data) < 2:
raise ValueError("At least two data points are required for risk assessment.")
return stdev(data)
# 7. Custom Probability Distribution
def calculate_custom_distribution(self, probabilities):
if not math.isclose(sum(probabilities), 1.0, rel_tol=1e-9):
raise ValueError("The probabilities must sum to 1.")
return probabilities
# 8. Time Series Analysis
def calculate_time_series_analysis(self, data, steps=1):
if len(data) < 2:
raise ValueError("At least two data points are required for time series analysis.")
x = np.arange(len(data)).reshape(-1, 1)
y = np.array(data)
model = LinearRegression()
model.fit(x, y)
future_x = np.arange(len(data), len(data) + steps).reshape(-1, 1)
predictions = model.predict(future_x)
return predictions.tolist()
# 9. Advanced Data Analysis
def calculate_advanced_analysis(self, data):
return {
"mean": mean(data),
"stdev": stdev(data),
"min": min(data),
"max": max(data),
}
# 10. Parallel Processing
def calculate_parallel(self, func, data, *args):
with Pool() as pool:
results = pool.starmap(func, [(item, *args) for item in data])
return results
# Usage Example
if __name__ == "__main__":
calc = AdvancedProbabilityCalculator()
# Example: Basic Probability
print("Basic Probability:", calc.calculate_basic_probability(1, 6))
# Example: Gaussian Distribution
print("Gaussian Distribution:", calc.calculate_gaussian_distribution(0, 0, 1))
# Example: Binomial Distribution
print("Binomial Distribution:", calc.calculate_binomial_distribution(10, 3, 0.5))
# Example: Conditional Probability
print("Conditional Probability:", calc.calculate_conditional_probability(0.2, 0.5))
# Example: Custom Distribution
print("Custom Distribution:", calc.calculate_custom_distribution([0.1, 0.2, 0.3, 0.4]))
# Example: Predictive Analysis
print("Predictive Analysis:", calc.calculate_predictive_analysis([1, 2, 3, 4, 5]))
# Example: Risk Assessment
print("Risk Assessment:", calc.calculate_risk_assessment([10, 12, 14, 16, 18]))
# Example: Time Series Analysis
print("Time Series Analysis:", calc.calculate_time_series_analysis([1, 2, 3, 4, 5], steps=3))
# Example: Advanced Analysis
print("Advanced Analysis:", calc.calculate_advanced_analysis([10, 20, 30, 40, 50]))