Distribution functions#
In this example, we will demonstrate how to define a distribution function using the probabilistic library.
The library supports the following distribution functions: deterministic, normal, log_normal, uniform, triangular, trapezoidal, exponential, gumbel, weibull, conditional_weibull, frechet, generalized_extreme_value, rayleigh, rayleigh_n, pareto, generalized_pareto, student_t, gamma, beta, poisson, discrete,
bernoulli, cdf_curve, histogram. Distribution functions are defined in the distribution property of a stochast.
Define a stochastic variable#
First, we import the necessary classes:
[53]:
from probabilistic_library import Stochast, DistributionType, DiscreteValue, HistogramValue, FragilityValue
Next, we create a random variable:
[54]:
stochast = Stochast()
Below, we demonstrate how to define distribution functions in the library.
Deterministic distribution#
[55]:
stochast.distribution = DistributionType.deterministic
stochast.mean = 0.8
stochast.print()
stochast.plot()
Variable:
distribution = deterministic
Definition:
location = 0.8
Derived values:
mean = 0.8
deviation = 0.0
variation = 0.0
Normal distribution#
[56]:
stochast = Stochast()
stochast.distribution = DistributionType.normal
stochast.location = 2.0
stochast.scale = 0.5
stochast.print()
stochast.plot()
Variable:
distribution = normal
Definition:
location = 2.0
scale = 0.5
Derived values:
mean = 2.0
deviation = 0.5
variation = 0.25
Log-normal distribution#
[57]:
stochast = Stochast()
stochast.distribution = DistributionType.log_normal
stochast.location = 0.0
stochast.scale = 1.0
stochast.shift = 0.0
stochast.print()
stochast.plot()
Variable:
distribution = log_normal
Definition:
location = 0.0
scale = 1.0
shift = 0.0
Derived values:
mean = 1.6487
deviation = 2.1612
variation = 1.3108
Uniform distribution#
[58]:
stochast = Stochast()
stochast.distribution = DistributionType.uniform
stochast.minimum = -1
stochast.maximum = 1
stochast.print()
stochast.plot()
Variable:
distribution = uniform
Definition:
minimum = -1.0
maximum = 1.0
Derived values:
mean = 0.0
deviation = 0.5774
variation = 0.0
Triangular distribution#
[59]:
stochast = Stochast()
stochast.distribution = DistributionType.triangular
stochast.minimum = 0.0 # parameter a
stochast.maximum = 3.0 # parameter b
stochast.shift = 2.0 # parameter c
stochast.print()
stochast.plot()
Variable:
distribution = triangular
Definition:
minimum = 0.0
shift = 2.0
maximum = 3.0
Derived values:
mean = 1.6667
deviation = 0.6236
variation = 0.3742
Trapezoidal distribution#
[60]:
stochast = Stochast()
stochast.distribution = DistributionType.trapezoidal
stochast.minimum = 1.0 # parameter a
stochast.maximum = 4.5 # parameter b
stochast.shift = 2.0 # parameter c
stochast.shift_b = 3.0 # parameter d
stochast.print()
stochast.plot()
Variable:
distribution = trapezoidal
Definition:
minimum = 1.0
shift = 2.0
shift_b = 3.0
maximum = 4.5
Derived values:
mean = 2.6481
deviation = 0.7462
variation = 0.2818
Exponential distribution#
[61]:
stochast = Stochast()
stochast.distribution = DistributionType.exponential
stochast.scale = 2.0
stochast.shift = 0.5
stochast.print()
stochast.plot()
Variable:
distribution = exponential
Definition:
scale = 2.0
shift = 0.5
Derived values:
mean = 2.5
deviation = 2.0
variation = 0.8
Gumbel distribution#
[62]:
stochast = Stochast()
stochast.distribution = DistributionType.gumbel
stochast.scale = 2.0
stochast.shift = 3.0
stochast.print()
stochast.plot()
Variable:
distribution = gumbel
Definition:
scale = 2.0
shift = 3.0
Derived values:
mean = 4.1544
deviation = 2.5651
variation = 0.6174
Weibull distribution#
[63]:
stochast = Stochast()
stochast.distribution = DistributionType.weibull
stochast.scale = 1.0
stochast.shift = 1.0
stochast.shape = 2.0
stochast.print()
stochast.plot()
Variable:
distribution = weibull
Definition:
scale = 1.0
shift = 1.0
shape = 2.0
Derived values:
mean = 1.8862
deviation = 0.4633
variation = 0.2456
Conditional Weibull distribution#
[64]:
stochast = Stochast()
stochast.distribution = DistributionType.conditional_weibull
stochast.scale = 1.0
stochast.shift = 5.0
stochast.shape = 2.0
stochast.shape_b = 1.0
stochast.print()
stochast.plot()
Variable:
distribution = conditional_weibull
Definition:
scale = 1.0
shift = 5.0
shape = 2.0
shape_b = 1.0
Derived values:
mean = 5.0558
deviation = 0.1251
variation = 0.0247
Frechet distribution#
[65]:
stochast = Stochast()
stochast.distribution = DistributionType.frechet
stochast.scale = 0.5
stochast.shift = 1.0
stochast.shape = 2.0
stochast.print()
stochast.plot()
Variable:
distribution = frechet
Definition:
scale = 0.5
shift = 1.0
shape = 2.0
Derived values:
mean = 1.8862
deviation = inf
variation = inf
Generalized extreme value distribution#
[66]:
stochast = Stochast()
stochast.distribution = DistributionType.generalized_extreme_value
stochast.scale = 1.0
stochast.shift = 5.0
stochast.shape = -0.5
stochast.print()
stochast.plot()
Variable:
distribution = generalized_extreme_value
Definition:
scale = 1.0
shift = 5.0
shape = -0.5
Derived values:
mean = 5.2275
deviation = 0.9265
variation = 0.1772
Rayleigh distribution#
[67]:
stochast = Stochast()
stochast.distribution = DistributionType.rayleigh
stochast.scale = 0.5
stochast.shift = 1.0
stochast.print()
stochast.plot()
Variable:
distribution = rayleigh
Definition:
scale = 0.5
shift = 1.0
Derived values:
mean = 1.6267
deviation = 0.3276
variation = 0.2014
Rayleigh N distribution#
[68]:
stochast = Stochast()
stochast.distribution = DistributionType.rayleigh_n
stochast.scale = 1.0
stochast.shift = 0.0
stochast.shape = 50.0
stochast.print()
stochast.plot()
Variable:
distribution = rayleigh_n
Definition:
scale = 1.0
shift = 0.0
shape = 50.0
Derived values:
mean = 2.9718
deviation = 0.4078
variation = 0.1372
Pareto distribution#
[69]:
stochast = Stochast()
stochast.distribution = DistributionType.pareto
stochast.scale = 1.0
stochast.shape = 3.0
stochast.print()
stochast.plot()
Variable:
distribution = pareto
Definition:
scale = 1.0
shape = 3.0
Derived values:
mean = 1.5
deviation = 0.866
variation = 0.5774
Generalized Pareto distribution#
[70]:
stochast = Stochast()
stochast.distribution = DistributionType.generalized_pareto
stochast.shape = 0.1
stochast.scale = 1.0
stochast.shift = 1.0
stochast.print()
stochast.plot()
Variable:
distribution = generalized_pareto
Definition:
scale = 1.0
shift = 1.0
shape = 0.1
Derived values:
mean = 1.909
deviation = 0.8294
variation = 0.4345
Student’s t-distribution#
[71]:
stochast = Stochast()
stochast.distribution = DistributionType.student_t
stochast.location = 0.0
stochast.scale = 1.0
stochast.observations = 5
stochast.print()
stochast.plot()
Variable:
distribution = student_t
Definition:
location = 0.0
scale = 1.0
observations = 5
Derived values:
mean = 0.0
deviation = 1.4142
variation = 0.0
Gamma distribution#
[72]:
stochast = Stochast()
stochast.distribution = DistributionType.gamma
stochast.scale = 2.0
stochast.shape = 4.0
stochast.print()
stochast.plot()
Variable:
distribution = gamma
Definition:
scale = 2.0
shape = 4.0
Derived values:
mean = 8.0
deviation = 4.0
variation = 0.5
Beta distribution#
[73]:
stochast = Stochast()
stochast.distribution = DistributionType.beta
stochast.shape = 2.0
stochast.shape_b = 2.0
stochast.print()
stochast.plot()
Variable:
distribution = beta
Definition:
shape = 2.0
shape_b = 2.0
Derived values:
mean = 0.5
deviation = 0.2236
variation = 0.4472
Poisson distribution#
[74]:
stochast = Stochast()
stochast.distribution = DistributionType.poisson
stochast.location = 4.0
stochast.print()
stochast.plot()
Variable:
distribution = poisson
Definition:
scale = 0.0
shift = 0.0
Derived values:
mean = 4.0
deviation = 2.0
variation = 0.5
Discrete distribution#
[75]:
stochast = Stochast()
stochast.distribution = DistributionType.discrete
x = [1, 2, 3]
amount = [0.1, 0.4, 0.5]
for i in range(0, len(x)):
dv = DiscreteValue()
dv.x = x[i]
dv.amount = amount[i]
stochast.discrete_values.append(dv)
stochast.print()
stochast.plot()
Variable:
distribution = discrete
Definition:
amount[1.0] = 0.1
amount[2.0] = 0.4
amount[3.0] = 0.5
Derived values:
mean = 2.4
deviation = 0.6633
variation = 0.2764
Bernoulli distribution#
[76]:
stochast = Stochast()
stochast.distribution = DistributionType.bernoulli
stochast.location = 0.3
stochast.print()
stochast.plot()
Variable:
distribution = bernoulli
Definition:
location = 0.3
Derived values:
mean = 0.3
deviation = 0.4583
variation = 1.5275
CDF curve distribution#
[77]:
stochast = Stochast()
stochast.distribution = DistributionType.cdf_curve
x = [1, 2, 3]
probability_of_failure = [0.01, 0.001, 0.0001]
# these are the exceedance probabilities, which will shift the probability mass to an area < 1.0
for i in range(0, len(x)):
fc = FragilityValue()
fc.x = x[i]
fc.probability_of_failure = probability_of_failure[i]
stochast.fragility_values.append(fc)
stochast.print()
stochast.plot()
Variable:
distribution = cdf_curve
Definition:
beta[1.0] = 2.3263
beta[2.0] = 3.0902
beta[3.0] = 3.719
Derived values:
mean = -2.0454
deviation = 1.3091
variation = 0.64
Histogram distribution#
[78]:
stochast = Stochast()
stochast.distribution = DistributionType.histogram
lower_bound = [1, 2, 3]
upper_bound = [2, 3, 4]
amount = [100, 200, 300]
for i in range(0, len(lower_bound)):
hv = HistogramValue()
hv.lower_bound = lower_bound[i]
hv.upper_bound = upper_bound[i]
hv.amount = amount[i]
stochast.histogram_values.append(hv)
stochast.print()
stochast.plot()
Variable:
distribution = histogram
Definition:
amount[1.0, 2.0] = 100.0
amount[2.0, 3.0] = 200.0
amount[3.0, 4.0] = 300.0
Derived values:
mean = 2.8333
deviation = 0.746
variation = 0.2633