Microsegment.ru
  • Главная страница
  • О проекте
  • Портфолио
  • Блог
Математика на Python

Распределение дискретной и непрерывной случайной величины

Распределение дискретной и непрерывной случайной величины
Математика на Python

Параметры дискретной случайной величины

Решение на 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

Python анализ Математика Теория вероятностей

Предыдущая статьяСлучайные величиныСледующая статья Непрерывные случайные величины

Рубрики

Метки

abc abcd excel Python sql VBA xyz Комбинаторика Математика Теория вероятностей анализ виртуальный помощник данные знания информационная система информация корпоративная информационная система маркетинг мудрость о проекте оптимизация практика программное обеспечение пэст ролевая модель теория юмор языки программирования

Политика конфиденциальности

Продолжая использовать данный сайт вы подтверждаете свое согласие с условиями его политики конфиденциальности. Подробнее…




Администрация и владельцы данного информационного ресурса не несут ответственности за возможные последствия, связанные с использованием информации, размещенной на нем.


Все права защищены. При копировании материалов сайта обязательно указывать ссылку на © Microsegment.ru (2020-2025)