Добавил:
jetu
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:4. Вычисление мощности критериев согласия (возможно, неполная)
.pyfrom numpy.random import rand
from numpy import *
from scipy.stats import norm
from scipy.stats import laplace
import matplotlib.pyplot as plt
def kolmogorov(a, u, d, n, m, alpha, theta):
A = a - d / 2
B = a + d / 2
y1 = rand(n, m)
y2 = rand(n, m)
X = sort((log(y1) - log(y2)) * u + a)
# X = sort((B - A) * rand(n, m) + A)
theoretical_dots = rand(n, m)
observed_dots = rand(n, m)
abs_sum = sum(abs(X))
f_practical = 0
failed = 0
for i in range(m):
observed = 0
for j in range(n):
x = X[j][i]
f_practical += abs(x)
if rand() >= theta:
f = 1 - 0.5 * exp(-(x - a) / u) if x >= a else 0.5 * exp((x - a) / u)
else:
f = (x - A) / (B - A) if A <= x < B else 0 if x < A else 1
# observed = max(max(observed, abs(f - j / n)), abs(f - (j - 1) / n))
observed = max(observed, abs(f - f_practical / abs_sum))
theoretical_dots[j][i] = f
observed_dots[j][i] = f_practical / abs_sum
# if observed * sqrt(n*n/(n+n)) < 1.36:
if observed * sqrt(n) < 1.36:
failed += 1
print(failed / m)
plt.scatter(X[0], theoretical_dots[0])
plt.scatter(X[0], observed_dots[0])
plt.show()
def main():
n = 10
confidence = 0.95
kolmogorov(a=2, u=2, d=3, n=n, m=1000, alpha=(1 - confidence), theta=.0)
if __name__ == '__main__':
main()
Соседние файлы в предмете Статистический анализ