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 sql VBA xyz Комбинаторика Математика Теория вероятностей анализ виртуальный помощник данные знания информационная система информация корпоративная информационная система маркетинг мудрость о проекте оптимизация практика программное обеспечение пэст ролевая модель теория юмор языки программирования

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

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




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


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