Advertisement
Guest User

Untitled

a guest
May 23rd, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.40 KB | None | 0 0
  1. from prettytable import PrettyTable
  2.  
  3. def get_size(statistic_series):
  4.     '''
  5.    Возвращает размер выборки
  6.    '''
  7.     n = 0
  8.     for pair in statistic_series:
  9.         n += pair[1]
  10.     return n
  11.  
  12. def get_statistic_series_as_input_selection():
  13.     '''
  14.    Возвращает статистический ряд
  15.    '''
  16.     statistic_series = []
  17.     print('Введите выборку: ')
  18.     while True:
  19.         try:
  20.             xi = float(input('Введите число: '))
  21.  
  22.             updated = False
  23.             for pair in statistic_series:
  24.                 if pair[0] == xi:
  25.                     pair[1]+=1#update
  26.                     updated = True
  27.  
  28.             if not updated:
  29.                 statistic_series.append([xi, 1])
  30.         except Exception as err:
  31.             break
  32.     return sorted(statistic_series, key=lambda pair: pair[0])
  33.  
  34. def get_statistic_series():
  35.     '''
  36.    Возвращает статистический ряд
  37.    '''
  38.     statistic_series = []
  39.     print('Ввод статистического ряда: ')
  40.     i = 1
  41.     while True:
  42.         try:
  43.             xi = float(input('Введите число x{}: '.format(i)))
  44.             i += 1
  45.             ni = int(input('Введите частоту появления: '))
  46.  
  47.             if ni <= 0:
  48.                 raise Exception()
  49.  
  50.             updated = False
  51.             for pair in statistic_series:
  52.                 if pair[0] == xi:
  53.                     pair[1]=ni#update
  54.                     updated = True
  55.  
  56.             if not updated:
  57.                 statistic_series.append([xi, ni])
  58.         except Exception as err:
  59.             break
  60.     return sorted(statistic_series, key=lambda pair: pair[0])
  61.  
  62. def put_emperical_function(statistic_series):
  63.     '''
  64.    Принимает отстортированный по значению список пар значение-частота появления
  65.    Выводит эмпирическую функцию распредления по статистическому ряду
  66.    '''
  67.     n = get_size(statistic_series)#объем выборки
  68.  
  69.     size = len(statistic_series)
  70.  
  71.     min_pair = statistic_series[0]
  72.     max_pair = statistic_series[size - 1]
  73.  
  74.     print('Эмпирическая функция распределения: ')
  75.     print('F*(x)=0 при x<=' + str(min_pair[0]))
  76.  
  77.     last_pair=min_pair
  78.  
  79.     accumulator = min_pair[1]
  80.  
  81.     for i in range(1, size):
  82.         prev_pair = statistic_series[i - 1]
  83.         curr_pair = statistic_series[i]
  84.  
  85.         left_end = prev_pair[0]
  86.         right_end = curr_pair[0]
  87.  
  88.         print('F*(x)={}/{} при {}<x<={}'.format(accumulator, n, left_end, right_end))
  89.         accumulator += curr_pair[1]
  90.  
  91.  
  92.     print('F*(x)=1 при x>' + str(max_pair[0]))
  93.  
  94. def get_medium(statistic_series):
  95.     accumulator = 0
  96.     n = get_size(statistic_series)
  97.     for pair in statistic_series:
  98.         xi = pair[0]
  99.         ni = pair[1]
  100.         accumulator += xi * ni
  101.     return accumulator/n
  102.  
  103. def get_dispersion(statistic_series):
  104.     '''
  105.    Возвращает дисперсию выборки
  106.    '''
  107.     sum = 0
  108.     n = get_size(statistic_series)
  109.     medium = get_medium(statistic_series)
  110.     for pair in statistic_series:
  111.         xi = pair[0]
  112.         sum += (xi - medium)**2
  113.     return sum/n
  114.  
  115. def get_corrected_dispersion(statistic_series):
  116.     '''
  117.    Возвращает исправленную дисперсию
  118.    '''
  119.     n = get_size(statistic_series)
  120.     dispersion = get_dispersion(statistic_series)
  121.     return (n / (n-1)) * dispersion
  122.  
  123. def show_statistic_series(two_selections):
  124.     print('Статистический ряд: ')
  125.     table = PrettyTable(['i', 'Xi', 'Ni'])
  126.     for i in range(len(two_selections)):
  127.         curr_pair = two_selections[i]
  128.         xi = curr_pair[0]
  129.         ni = curr_pair[1]
  130.         table.add_row([i+1, xi, ni])
  131.     print(table)
  132.  
  133. statistic_series = get_statistic_series_as_input_selection()
  134. show_statistic_series(statistic_series)
  135. put_emperical_function(statistic_series)
  136. medium = get_medium(statistic_series)
  137. print('Выборочное среднее: ' + str(medium))
  138. dispersion = get_dispersion(statistic_series)
  139. print('Дисперсия: ' + str(dispersion))
  140. corrected_dispersion = get_corrected_dispersion(statistic_series)
  141. print('Исправленная дисперсия: ' + str(corrected_dispersion))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement