Advertisement
575

criteria check

575
Nov 6th, 2022 (edited)
495
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.91 KB | None | 0 0
  1. # Вспомогательная функция для критерия Пирсона(вероятность попадания в интервал (a,b))
  2. def R01Prob(a, b):
  3.     return b - a
  4.  
  5. # Критерий Пирсона (проверка распределения на равномерность)
  6. def Pearson(x):
  7.     x_var = np.sort(x)
  8.     h = 1 / 30
  9.     x = np.arange(0, 1 + h, h)
  10.     x_exp = np.array([])
  11.  
  12.     for i in range(1, len(x)):
  13.         N = 0
  14.         for j in range(len(x_var)):
  15.             if x_var[j] >= x[i - 1] and x_var[j] <= x[i]:
  16.                 N += 1
  17.         x_exp = np.append(x_exp, N / len(x_var))
  18.  
  19.     #hi^2
  20.     hi = 0
  21.  
  22.     for i in range(len(x) - 1):
  23.         hi += ((R01Prob(x[i], x[i + 1]) - x_exp[i])**2) / R01Prob(x[i], x[i + 1])
  24.    
  25.     return hi
  26.  
  27. # Метод инверсий (полученное значение должно попасть в интервал (-1.96,1.96))
  28. def InvMeth(x):
  29.     inversion = 0 # inversions
  30.     for i in range(len(x)):
  31.         for j in range(i + 1, len(x)):
  32.             if x[i] >= x[j]:
  33.                 inversion += 1
  34.     return (inversion - (len(x) * (len(x)-1))/4) / (np.sqrt((2 * len(x)**3 + 3 * len(x)**2 - 54) / 72))
  35.  
  36. # Проверка на независимость (возвращает коэффициент корреляции)
  37. def CheckIndependence(x):
  38.     K = 0
  39.     D = 0
  40.     # mean
  41.     XMean = 0
  42.    
  43.     for i in range(len(x)):
  44.         XMean += x[i]
  45.  
  46.     XMean /= len(x)
  47.    
  48.     for i in range(len(x)-1):
  49.         K += (x[i] - XMean) * (x[i + 1] - XMean)
  50.    
  51.     K /= (len(x) - 1)
  52.    
  53.     for i in range(len(x)):
  54.         D += (x[i] - XMean) ** 2
  55.    
  56.     K /= len(x)
  57.     return K / D
  58.  
  59. R = RStandart(100)
  60.  
  61. hi = Pearson(R)
  62. InversionMeth = InvMeth(R)
  63. CheckInd = CheckIndependence(R)
  64.  
  65. print("hi^2 = %.5f" %(hi))
  66. print("Inversion Method = %.5f" %(InversionMeth))
  67. print("Independence = %.5f" %(CheckInd))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement