Параметры дискретной случайной величины
Решение на Python:
import numpy as np
from fractions import Fraction # Дроби
# Математическое ожидание, дисперсия
# среднеpквадратичное (стандартное) отклонение
# дискретной случайной величины
# ФУНКЦИЯ
def mean_square_deviation(X, P):
# умножение очков на вероятность
XP = []
# математическое ожидание
M = 0
# дисперсия
D = 0
D2 = []
# средне квадратичное отклонение
STD = 0
XP = X*P
M = sum(XP)
"""i = 0
while i < len(X):
xp = X[i]*P[i]
M += xp
XP.append(Fraction(xp).limit_denominator(100))
i += 1"""
D2 = (X - M)**2*P
"""i = 0
while i < len(X):
D2.append((X[i] - M)**2*P[i])
i += 1"""
D = sum(D2)
STD = D**.5
xmin = M - STD
xmax = M + STD
STD2 = 2*STD
STD3 = 3*STD
min2STD = M - STD2
max2STD = M + STD2
min3STD = M - STD3
max3STD = M + STD3
print("Параметры дискретной случайной величины:")
print()
print("Знач. Вероят. X*P Дисп. СКО")
print("-----------------------------------")
i = 0
while i < len(X):
string = str(X[i]) + '\t'
string += str(Fraction(P[i]).limit_denominator(100)) + '\t'
string += str(Fraction(XP[i]).limit_denominator(100)) + '\t'
string += str(Fraction(D2[i]).limit_denominator(100)) + '\t'
if X[i] > xmin and X[i] < xmax: string += '|'
if X[i] > min2STD and X[i] < max2STD: string += '|'
if X[i] > min3STD and X[i] < max3STD: string += '|'
print(string)
i += 1
print()
print("Математическое ожидание M =", round(M, 3), "=", Fraction(M).limit_denominator(10))
#print("(при игре в 2 кости в среднем будет выпадать значение {:})".format(M))
print()
print("Дисперсия случайной величины D =",
round(D, 2), "=",
Fraction(D).limit_denominator(10))
print()
print("Среднеквадратичное отклонение (СКО или sigma) =",
round(STD, 2), "=",
Fraction(STD).limit_denominator(10))
print("(в среднем, значения будут от {:} до {:})".format(round(xmin, 2), round(xmax, 2)))
print()
print("Отклонение 2 сигмы = {:} = {:} (значения от {:} до {:})".format(round(STD2, 2),
Fraction(STD2).limit_denominator(10),
round(min2STD, 2),
round(max2STD, 2)))
print("Отклонение 3 сигмы = {:} = {:} (значения от {:} до {:})".format(round(STD3, 2),
Fraction(STD3).limit_denominator(10),
round(min3STD, 2),
round(max3STD, 2)))
return STD
# ВВОД ДАННЫХ
# значения
#X = [0, 1, 2, 3]
X = np.array([0, 1, 2, 3])
# вероятность (сумма всех
# вероятностей должна быть = 1)
#P = [.1, .3, .5, .1]
P = np.array([.1, .3, .5, .1])
# Количество поставляемых товаров в день
X = np.array([5, 17, 25, 30])
# Вероятность поставки товаров в день
P = np.array([.1, .6, .05, .25])
# Количество дней поставок
days = 35
# РЕШЕНИЕ
std = mean_square_deviation(X, P)
Параметры дискретной случайной величины:
Знач. Вероят. X*P Дисп. СКО
-----------------------------------
5 1/10 1/2 1921/92 ||
17 3/5 51/5 353/98 |||
25 1/20 5/4 134/87 |||
30 1/4 15/2 2393/86 ||
Математическое ожидание M = 19.45 = 175/9
Дисперсия случайной величины D = 53.85 = 377/7
Среднеквадратичное отклонение (СКО или sigma) = 7.34 = 22/3
(в среднем, значения будут от 12.11 до 26.79)
Отклонение 2 сигмы = 14.68 = 44/3 (значения от 4.77 до 34.13)
Отклонение 3 сигмы = 22.01 = 22 (значения от -2.56 до 41.46)
Функция распределения дискретной случайной величины
Решение на Python:
# Функция распределения
# дискретной случайной величины
# ФУНКЦИЯ
def discrete_random_variable_function(Z, P, x):
# Z - значения.
# P - вероятность (сумма всех
# вероятностей должна быть = 1).
# Z, P - должны быть:
# 1. одноуровневой одинаковой размерности;
# 2. отсортированы по Z от меньшего к большему.
p = 0
if x <= Z[0]: p = 0
elif x > Z[len(Z)-1]: p = 1
else:
i = 1
while i < len(Z):
if Z[i-1] < x <= Z[i]:
p = P[i]
i += 1
return p
# ВВОД ДАННЫХ
# значения
Z = [0, 1, 2, 3]
# вероятность (сумма всех
# вероятностей должна быть = 1)
P = [.1, .3, .5, .1]
# искомая величина
x = 1.0001
# РЕШЕНИЕ
p = discrete_random_variable_function(Z, P, x)
print(p)
0.5
Функция распределения непрерывной случайной величины
Функция распределения непрерывной случайной величины:
F(\infty) = \lim_{x \to \infty} F(x) = P(\xi < +\infty) = 1
F(-\infty) = \lim_{x \to -\infty} F(x) = P(\xi < -\infty) = 0
Сравнение случайных величин
Если вероятность a меньше b:
a < b \\ P(\xi < a) \leqslant P(\xi < b) \\ F(a) \leqslant F(b)
Если вероятность находится в пределе между a и b:
P(a \leqslant \xi < b) = P(\xi < b) - P(\xi < a) = F(b) - F(a)
Формула Ньютона-Лейбница (значение первообразной в точке b минус значение первообразной в точке a):
\int\limits_a^b f(x) dx= F(b) - F(a)
Первообразная для расчета распределения непрерывной случайной величины
Первообразная F(x):
F(x) = \int f(x) dx \\ F'(x) = f(x)
Первообразная x (C— константа):
\int x dx = \frac{x^2}{2} + C
м виде (ln(x) — натуральный логарифм):
\int k x^n dx = k \frac{x^{n+1}}{n + 1} + C, n \ne -1 \\ \int \frac{k}{x} dx = k \ln(x) + C
Число e — основание натурального логарифма:
\lim_{n \to \infty} \left(1 + \frac{1}{n} \right)^n = e
Плотность распределения вероятности:
\lim_{x \to \pm\infty} f(x) = 0 \\ F(x) = \int\limits_{-\infty}^x f(x) dx \\ F'(x) = \lim_{\Delta x \to 0} \frac{\Delta F}{\Delta x} = \lim_{\Delta x \to 0} \frac{f(x) \Delta x}{\Delta x} = f(x)
Параметры непрерывного распределения вероятности
Для расчета параметров непрерывного распределения вероятности, нужно ее плотность с помощью Δx→0 превратить, по сути, в дискретное распределение, где интервалы Δx стремятся к нулю.
Математическое ожидание непрерывного распределения:
M[x] = \bar x = \lim_{\Delta x \to 0} \sum(x \cdot f(x) \Delta x) = \int\limits_{-\infty}^{\infty} x f(x) dx
Средний квадрат непрерывного распределения:
\overline {x^2} = \int\limits_{-\infty}^{\infty} x^2 f(x) dx
Дисперсия непрерывного распределения:
D[x] = \int\limits_{-\infty}^{\infty} (x - M[x])^2 f(x) dx = \overline{x^2} - (\bar x)^2
Решение на Python:
import sympy as sm
x, k, c, D = sm.symbols("x k c D")
#k = .4
#c = 2
fx = k*x**2
fx = k*x + c
# Математическое ожидание непрерывного распределения
M = sm.integrate(x*fx, (x)) # неопределенный интеграл (обратный к дифференцированию)
#M = sm.integrate(x*fx, (x, 1, 2))
print("M =", M)
# Средний квадрат непрерывного распределения
x2 = sm.integrate(x**2*fx, (x))
print("x2 =", x2)
# Дисперсия непрерывного распределения
Dx = x2 - M**2
print("D =", Dx)
sm.Eq(D, Dx)
M = c*x**2/2 + k*x**3/3
x2 = c*x**3/3 + k*x**4/4
D = c*x**3/3 + k*x**4/4 - (c*x**2/2 + k*x**3/3)**2
D = \frac{cx^3}{3} + \frac{cx^4}{4} - \left( \frac{cx^2}{2} + \frac{cx^3}{3} \right)^3
Распределение непрерывной случайной величины
Распределение от 0 до τ:
\left. \int\limits_{-\infty}^{\infty} f(x) dx = \int\limits_0^{\tau} k dt = kt \right|_0^{\tau} = k\tau - k \cdot 0 = k\tau = 1
f(x)\left\{{0; t<0 \\ k; 0<t<\tau, k = \frac{1}{\tau} \\ 0; t>\tau} \right.
Решение на Python:
import sympy as sm
tau = sm.symbols("tau")
fx = 1/tau
fx
\frac{1}{\tau}
Функция распределения непрерывной случайной величины
Функция распределения:
F(t) = \int\limits_{-\infty}^t f(t) dt = \left\{{0; t \leqslant 0 \\ \frac{t}{\tau}; 0<t \leqslant \tau \\ 1; t>\tau} \right.
Среднее значение непрерывной случайной величины
Среднее значение непрерывной случайной величины (математическое ожидание):
M[t] = \int\limits_{-\infty}^{\infty} t f(t) dt = \int\limits_0^{\tau} \frac{t}{\tau} dt = \frac{\tau}{2}
Решение на Python:
import sympy as sm
tau = sm.symbols("tau")
M = tau/2
M
\frac{\tau}{2}
Математическое ожидание квадрата непрерывной случайной величины
Математическое ожидание квадрата непрерывной случайной величины:
M[t^2] = \int\limits_{-\infty}^{\infty} t^2 f(t) dt = \int\limits_0^{\tau} \frac{t^2}{\tau} dt = \frac{\tau^2}{3}
Решение на Python:
import sympy as sm
tau = sm.symbols("tau")
Mt2 = tau**2/3
Mt2
\frac{\tau^2}{3}
Дисперсия непрерывной и среднеквадратичное отклонение случайной величины
Дисперсия непрерывной случайной величины:
D[t] = M[t^2] - M^2[t] = \frac{\tau^2}{12}
Среднеквадратичное отклонение непрерывной случайной величины:
\sigma = \frac{\tau}{2\sqrt{3}} = \frac{\tau}{3.4}
Решение на Python:
import sympy as sm
tau = sm.symbols("tau")
D = tau**2/12
D
\frac{\tau^2}{12}
import sympy as sm
tau = sm.symbols("tau")
sigma = tau/(2*3**.5)
sigma
0.288675134594813\tau