Случайная величина — это величина, принимающая в зависимости от случая те или иные значения с определёнными вероятностями.
Значение признака:
\{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)