Добавил:
jetu
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:2. Сравнение свойств статистических оценок
.pyimport matplotlib.pyplot as plt
from numpy.random import rand
from numpy import *
def get_r(X, title):
a = [mean(X, axis=0),
median(X, axis=0),
(amax(X, axis=0) + amin(X, axis=0)) / 2]
fig, axs = plt.subplots(3, 1)
for i in range(3):
axs[i].hist(a[i], bins=20)
fig.suptitle(title)
plt.show()
return [std(i) for i in a]
def laplace(a, u, n, m):
y1 = rand(n, m)
y2 = rand(n, m)
X = (log(y1) - log(y2)) * u + a
r = get_r(X, f"Оценки при распределении Лапласа (n = {n})")
t = [u * sqrt(2 / n),
u / sqrt(n),
0.97 * u]
print(f"Распределение Лапласа (n = {n})")
for i in range(3):
difference = abs(r[i] - t[i])
print(f"t{i} = {t[i]:.5f}, r{i} = {r[i]:.5f}, "
f"Δ = {difference:.5f}, δ = {difference / t[i] * 100:.2f} %")
def uniform(a, d, n, m):
A = a - d / 2
B = a + d / 2
X = (B - A) * rand(n, m) + A
r = get_r(X, f"Оценки при равномерном распределении (n = {n})")
t = [d / sqrt(12 * n),
d / (2 * sqrt(n)),
d / sqrt(2 * (n + 1) * (n + 2))]
print(f"Равномерное распределение (n = {n})")
for i in range(3):
difference = abs(r[i] - t[i])
print(f"t{i} = {t[i]:.5f}, r{i} = {r[i]:.5f}, "
f"Δ = {difference:.5f}, δ = {difference / t[i] * 100:.2f} %")
for n_value in (10, 100, 1000):
laplace(a=2, u=2, n=n_value, m=1000)
print("---")
for n_value in (10, 100, 1000):
uniform(a=2, d=3, n=n_value, m=1000)
Соседние файлы в предмете Статистический анализ