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

Случайные величины

Случайные величины
Математика на Python

Случайная величина — это величина, принимающая в зависимости от случая те или иные значения с определёнными вероятностями.

Значение признака:

\{X_i\}; n

Среднее арифметическое взвешенное (f — частота):

\{X_i; f_i\}

Относительная частота (статистический вес):

W_i = \frac {f_i}{\sum f_i}

Среднее значение:

\overline X = \frac{\sum_{i=1}^n x_i f_i}{\sum f_i}
\overline X = \frac{\sum_{i=1}^n x_i}{n}
\overline X = \sum x_i \cdot W_i

Диапазон изменения значений:

\Delta X = X_{max} - X_{min}

Дисперсия (средний квадрат отклонения от среднего значения, итоговая формула дисперсии — средний квадрат минус квадрат среднего):

D_x = \overline {(x - \bar x)^2} = \frac {\sum_{i=1}^n (x_i - \bar x)^2}{n} = \overline {x^2} - (\bar x)^2

Среднее квадратичное отклонение (СКО или сигма):

\sigma = \sqrt{D_x}

Правило 3 сигм: случайная величина отклоняется от своего среднего значения не более чем на 3 сигмы.

Математическое ожидание (мат.ожидание):

\overline x = M[x] = \sum x_i P_i

где Pi — это Wi, а сумма вероятностей P = W = 1.

Формулы дисперсии на основе математического ожидания:

D_x = \sum \left[(x_i - M[x])^2 \cdot P_i \right]

или (средний квадрат отклонения от среднего значения):

D_x = M[x^2] - M^2[x]

Примеры на Python:

import numpy as nm

x1 = 6
x2 = 2

x_over = (x1 + x2)/2
print("Среднее арифметическое    =", x_over)

x_2_over = (x1**2 + x2**2)/2
x_over_2 = x_over**2
print("Средний квадрат           = {:}^2".format(x_2_over))
print("Квадрат среднего значения = {:}^2".format(x_over_2))

Dx = x_2_over - x_over_2
print("Дисперсия                 = {:}^2".format(Dx))

# MSD - Mean square deviation
# STD - Standart deviation
# MSD = STD -> одно и тоже
STD = Dx*.5
print("Среднее квадратичное отклонение (СКО) =", STD)

# Дисперсия
X  = nm.array([2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
P  = nm.array([1/36, 2/36, 3/36, 4/36, 5/36, 6/36, 5/36, 4/36, 3/36, 2/36, 1/36])
# Вариант 1
Dx = sum((X - sum(X*P))**2*P)
print(Dx)
# Вариант 2
Dx = sum((X**2)*P) - sum(X*P)**2
print(Dx)
Среднее арифметическое    = 4.0
Средний квадрат           = 20.0^2
Квадрат среднего значения = 16.0^2
Дисперсия                 = 4.0^2
Среднее квадратичное отклонение (СКО) = 2.0
5.833333333333334
5.833333333333336

Пример про инвестиции на Python:

# Пример про инвестиции

# Вложение всех средств
# в 1 инвестиционный инструмент
r_over = .1 #10% # доходность в %
r_STD = .01 #1%
# Максимальная и минимальная доходность
# от 1 инструмента
x_max = 100*r_over + 100*3*r_STD
x_min = 100*r_over - 100*3*r_STD
print("x_max =", x_max)
print("x_min =", x_min)
print()

# Диверсифицированное вложение 
# в n-количество одинаковых
# инвестиционных инструментов

# 1 инструмент
i_over = .1
i_STD = .01
# Все инструменты
n = 100 # количество разных инструментов
n_over = n*i_over
Dn = n*i_STD**2
n_STD = (Dn)**.5
n_max = n_over + 3*n_STD
n_min = n_over - 3*n_STD
print("n_max =", n_max)
print("n_min =", n_min)
x_max = 13.0
x_min = 7.0

n_max = 10.3
n_min = 9.7

Пример с 2 костями на Python:

from fractions import Fraction # Дроби

# Пример с 2 костями

# очки
X  = [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
# вероятность (сумма всех
# вероятностей должна быть = 1)
P  = [1/36, 2/36, 3/36, 4/36, 5/36, 6/36, 5/36, 4/36, 3/36, 2/36, 1/36]
# умножение очков на вероятность
XP = []
# математическое ожидание
M = 0
# дисперсия
D = 0
D2 = []
# средне квадратичное отклонение
STD = 0

i = 0
while i < len(X):
    xp = X[i]*P[i]
    M += xp
    XP.append(Fraction(xp).limit_denominator(100))
    i += 1

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("Очки,  Вероят., 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(XP[i]) + '\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("Средне квадратичное отклонение (СКО) =", 
      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)))
Очки,  Вероят., X*P,    Дисп.,  СКО
-----------------------------------
2	1/36	1/18	25/36	|
3	1/18	1/6	8/9	||
4	1/12	1/3	3/4	||
5	1/9	5/9	4/9	|||
6	5/36	5/6	5/36	|||
7	1/6	7/6	0	|||
8	5/36	10/9	5/36	|||
9	1/9	1	4/9	|||
10	1/12	5/6	3/4	||
11	1/18	11/18	8/9	||
12	1/36	1/3	25/36	|

Математическое ожидание M = 7.0 = 7

Дисперсия случайной величины D = 5.83 = 35/6

Средне квадратичное отклонение (СКО) = 2.42 = 17/7
(в среднем, значения будут от 4.58 до 9.42)

Отклонение 2 сигмы = 4.83 = 29/6 (значения от 2.17 до 11.83)
Отклонение 3 сигмы = 7.25 = 29/4 (значения от -0.25 до 14.25)

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

Предыдущая статьяСложение и умножение вероятностейСледующая статья Распределение дискретной и непрерывной случайной величины

Рубрики

Метки

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

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

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




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


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