Добавил:
jetu
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:3. Доверительные интервалы
.pyfrom numpy.random import rand
from numpy import *
from scipy.stats import norm
def main():
for distribution in (laplace, uniform):
for n in (50, 100, 500):
for confidence in (0.95, 0.99):
distribution(a=2, u=2, d=3, n=n, m=1000, alpha=(1 - confidence))
print("---")
def laplace(a, u, d, n, m, alpha):
print(f"\nРаспределение Лапласа при n = {n}, 1 – α = {1 - alpha:.2f}")
y1 = rand(n, m)
y2 = rand(n, m)
X = (log(y1) - log(y2)) * u + a
M = median(X, axis=0)
q = norm.ppf(1 - alpha / 2)
k = u * q / (sqrt(n))
fails = 0
for i in range(m):
if not (M[i] - k < a < M[i] + k):
fails += 1
print(f"Доверительный интервал: {M[0] - k:.2f}..{M[0] + k:.2f}")
print(f"Оценка уровня доверия: {1 - fails / m:.3f}")
def uniform(a, u, d, n, m, alpha):
print(f"\nРавномерное распределение при n = {n}, 1 – α = {1 - alpha:.2f}")
A = a - d / 2
B = a + d / 2
X = (B - A) * rand(n, m) + A
max_X = amax(X, axis=0)
min_X = amin(X, axis=0)
M = (max_X + min_X) / 2
q = -log(alpha)
k = q * (max_X - min_X) / (2 * n)
fails = 0
for i in range(m):
if not (M[i] - k[i] < a < M[i] + k[i]):
fails += 1
print(f"Доверительный интервал: {M[0] - k[0]:.2f}..{M[0] + k[0]:.2f}")
print(f"Оценка уровня доверия: {1 - fails / m:.3f}")
if __name__ == '__main__':
main()
Соседние файлы в предмете Статистический анализ