Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from prettytable import PrettyTable
- def get_size(statistic_series):
- '''
- Возвращает размер выборки
- '''
- n = 0
- for pair in statistic_series:
- n += pair[1]
- return n
- def get_statistic_series_as_input_selection():
- '''
- Возвращает статистический ряд
- '''
- statistic_series = []
- print('Введите выборку: ')
- while True:
- try:
- xi = float(input('Введите число: '))
- updated = False
- for pair in statistic_series:
- if pair[0] == xi:
- pair[1]+=1#update
- updated = True
- if not updated:
- statistic_series.append([xi, 1])
- except Exception as err:
- break
- return sorted(statistic_series, key=lambda pair: pair[0])
- def get_statistic_series():
- '''
- Возвращает статистический ряд
- '''
- statistic_series = []
- print('Ввод статистического ряда: ')
- i = 1
- while True:
- try:
- xi = float(input('Введите число x{}: '.format(i)))
- i += 1
- ni = int(input('Введите частоту появления: '))
- if ni <= 0:
- raise Exception()
- updated = False
- for pair in statistic_series:
- if pair[0] == xi:
- pair[1]=ni#update
- updated = True
- if not updated:
- statistic_series.append([xi, ni])
- except Exception as err:
- break
- return sorted(statistic_series, key=lambda pair: pair[0])
- def put_emperical_function(statistic_series):
- '''
- Принимает отстортированный по значению список пар значение-частота появления
- Выводит эмпирическую функцию распредления по статистическому ряду
- '''
- n = get_size(statistic_series)#объем выборки
- size = len(statistic_series)
- min_pair = statistic_series[0]
- max_pair = statistic_series[size - 1]
- print('Эмпирическая функция распределения: ')
- print('F*(x)=0 при x<=' + str(min_pair[0]))
- last_pair=min_pair
- accumulator = min_pair[1]
- for i in range(1, size):
- prev_pair = statistic_series[i - 1]
- curr_pair = statistic_series[i]
- left_end = prev_pair[0]
- right_end = curr_pair[0]
- print('F*(x)={}/{} при {}<x<={}'.format(accumulator, n, left_end, right_end))
- accumulator += curr_pair[1]
- print('F*(x)=1 при x>' + str(max_pair[0]))
- def get_medium(statistic_series):
- accumulator = 0
- n = get_size(statistic_series)
- for pair in statistic_series:
- xi = pair[0]
- ni = pair[1]
- accumulator += xi * ni
- return accumulator/n
- def get_dispersion(statistic_series):
- '''
- Возвращает дисперсию выборки
- '''
- sum = 0
- n = get_size(statistic_series)
- medium = get_medium(statistic_series)
- for pair in statistic_series:
- xi = pair[0]
- sum += (xi - medium)**2
- return sum/n
- def get_corrected_dispersion(statistic_series):
- '''
- Возвращает исправленную дисперсию
- '''
- n = get_size(statistic_series)
- dispersion = get_dispersion(statistic_series)
- return (n / (n-1)) * dispersion
- def show_statistic_series(two_selections):
- print('Статистический ряд: ')
- table = PrettyTable(['i', 'Xi', 'Ni'])
- for i in range(len(two_selections)):
- curr_pair = two_selections[i]
- xi = curr_pair[0]
- ni = curr_pair[1]
- table.add_row([i+1, xi, ni])
- print(table)
- statistic_series = get_statistic_series_as_input_selection()
- show_statistic_series(statistic_series)
- put_emperical_function(statistic_series)
- medium = get_medium(statistic_series)
- print('Выборочное среднее: ' + str(medium))
- dispersion = get_dispersion(statistic_series)
- print('Дисперсия: ' + str(dispersion))
- corrected_dispersion = get_corrected_dispersion(statistic_series)
- print('Исправленная дисперсия: ' + str(corrected_dispersion))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement