Разработка программы для анализа прогнозирования производительности труда в области информации и связи

Заказать уникальную курсовую работу
Тип работы: Курсовая работа
Предмет: Программирование
  • 35 35 страниц
  • 6 + 6 источников
  • Добавлена 03.07.2024
1 496 руб.
  • Содержание
  • Часть работы
  • Список литературы
Содержание
Введение 3
1 Постановка задачи анализа и прогнозирования производительности труда в области информации и связи…………………4
1.1 Особенности анализа производительности труда в в сфере информации и связи…………….…………………………………………………...4
1.2 Описание взаимодействия с пользователем в процессе исследования производительности труда……………………………………………...…………..7
1.3 Статистический анализ производительности труда …………………...8
2 Разработка алгоритма решения задачи……………………………….11
2.1 Математическая постановка задачи…………………………...……….11
2.2 Схема алгоритма решения………………………….…………………...14
2.3 Описание средств и методов решения задачи……….………………...18
3 Реализация программы…………………………………….……………20
3.1 Код программы…………………………………….…………………….20
3.2 Тестирование и отладка.………….……………………………………..23
3.3 Апробация и интерпретация результатов.…..………………….……...24
Заключение………………………………………………….………………28
Список литературы…………………………………………………….…..29
Приложения ………………………………………….……………………..30
Фрагмент для ознакомления

2) значения округлены до одного знака после запятой.Таблица 2 Результаты прогнозирования, рассчитанные с помощью разработанной программыГодПроизводительность труда в процентах к предыдущему году2023101,82024101,52025101,22026100,92027100,52028100,2202999,9203099,5Полученные результаты сопоставимы, поэтому можно считать прогнозы, полученные от разработанной программы, адекватными.ЗаключениеЦель работы достигнуто – создано приложение, которое на основе данных из официальных источников строит регрессионную модель и предоставляет возможность провести статистический анализ и спрогнозировать значения производительности труда для указанного пользователем периода. Успешно проведено тестирование программы. Полученная погрешность решения приемлема. Данные прогноза сопоставимы с данными, полученными в коммерческой программе, предоставляющей функцию прогнозирования значений.Список литературы1. Нагаева О.С., Поподько Г.И. Сравнительный анализ производительности труда в ресурсных и нересурсных регионах России // Экономика труда. – 2019. – Том 6. – № 4. – С. 1299-1316. – doi: 10.18334/et.6.4.41271.2. Коробова А.В. Методика анализа производительности труда в торговых организациях // Молодой ученый. — 2018. — № 21 (207). — С. 249-251. — URL: https://moluch.ru/archive/207/50831/ (дата обращения: 04.04.2024).3. Марцин В.С. Экономика торговли. – К.: «Знания», 2006. – [Электронный ресурс] – Режим доступа: http://uchebnikirus.com/ekonomika/ekonomika_torgivli_-martsin_bc/ekonomika_torgivli-_martsin_bc.htm4. Управление производством // [Электронный ресурс] – Режим доступа: https://up-pro.ru/encyclopedia/analiz-proizvoditelnosti/ (дата обращения: 04.04.2024).5. Факторный анализ: все темы // Национальный институт труда. – [Электронный ресурс] – Режим доступа: https://www.nitt.by/aktual/vse-temy/faktornyy-analiz-povysheniya-proizvodite (дата обращения: 04.04.2024).6. Росстат. Промышленное производство в 2021 году: [Электронный ресурс] – Режим доступа: https://rosstat.gov.ru/storage/mediabank/Prom_proiz-vo_2021.pdf (стр. 17) – (дата обращения: 04.04.2024).ПриложенияПриложениеА. Кодпрограммыimport numpyas npimport tkinteras tkfrom tkinterimport ttkimport matplotlib.pyplotas pltfrom matplotlib.backends.backend_tkaggimport FigureCanvasTkAgg# Данныеx = np.array([2017, 2018, 2019, 2020, 2021, 2022])y = np.array([101.2, 103.7, 106.1, 101.8, 107.8, 97.3])def calculate_regression(): A = np.ones((len(x), 2)) A[:, 1] = x b = np.linalg.lstsq(A, y, rcond=-1)[0]return bdef calculate_prediction(year, coefficients):return coefficients[0] + coefficients[1] * yeardef calculate_statistics(values):mean_value = np.mean(values)# Вычислениедисперсииповыборочнойформулеvariance = np.mean((values - mean_value) ** 2)std_deviation = np.sqrt(variance)coeff_variation = (std_deviation / mean_value) * 100return mean_value, variance, std_deviation, coeff_variationdef plot_graph(year_range, coefficients):years_to_predict = np.arange(year_range[0], year_range[1] + 1)predicted_values = [calculate_prediction(year, coefficients) for year in years_to_predict] fig, ax = plt.subplots(figsize=(8, 6))ax.scatter(x, y, color='blue', label='Исходныеданные')ax.plot(years_to_predict, predicted_values, color='red', label='Прогноз')ax.set_xlabel('Год')ax.set_ylabel('Значение')ax.set_title('ПрогнозированиесиспользованиемМНК')ax.legend()ax.grid(True) canvas = FigureCanvasTkAgg(fig, master=frame)canvas_widget = canvas.get_tk_widget()canvas_widget.grid(row=5, column=0, columnspan=4)def display_results(year_range, coefficients):years_to_predict = np.arange(year_range[0], year_range[1] + 1)predicted_values = [calculate_prediction(year, coefficients) for year in years_to_predict]mean_value, variance, std_deviation, coeff_variation = calculate_statistics(predicted_values)# Оценкапогрешностирешенияy_predicted = coefficients[0] + coefficients[1] * xrmse = np.sqrt(np.mean((y - y_predicted) ** 2))result_text = f"Средняявеличина (среднееарифметическое): {mean_value:.2f}\n" \f"Дисперсия: {variance:.2f}\n" \f"Среднеквадратичноеотклонение: {std_deviation:.2f}\n" \f"Коэффициентвариации: {coeff_variation:.2f}%\n" \f"Среднеквадратичноеотклонениерегрессии: {rmse:.4f}"result_label.config(text=result_text)# Добавляемвиджетдляотображенияпрогнозируемыхзначенийprediction_text = "\n".join([f"{year}: {value:.2f}" for year, value in zip(years_to_predict, predicted_values)])prediction_label.config(text=prediction_text)# Графическийинтерфейсroot = tk.Tk()root.title("ПрогнозированиесиспользованиемМНК")frame = ttk.Frame(root, padding="10")frame.grid(row=0, column=0, sticky=(tk.W, tk.E, tk.N, tk.S))# Выбордиапазоналетдляпрогнозаttk.Label(frame, text="Выберитедиапазонлетдляпрогноза/анализа:").grid(row=0, column=0)year_start = ttk.Entry(frame)year_start.grid(row=0, column=1)year_start.insert(0, "2023")ttk.Label(frame, text="-").grid(row=0, column=2)year_end = ttk.Entry(frame)year_end.grid(row=0, column=3)year_end.insert(0, "2030")# Кнопкадляпостроенияграфикаttk.Button(frame, text="Построитьграфик",command=lambda: plot_graph((int(year_start.get()), int(year_end.get())),calculate_regression())).grid(row=1, column=0, columnspan=4)# Кнопкадлярасчетаивыводарезультатовttk.Button(frame, text="Статистическийанализ",command=lambda: display_results((int(year_start.get()), int(year_end.get())),calculate_regression())).grid(row=2, column=0, columnspan=4)# Меткадлявыводарезультатовresult_label = ttk.Label(frame, text="", wraplength=400)result_label.grid(row=3, column=0, columnspan=4)# Меткадлявыводапрогнозируемыхзначенийprediction_label = ttk.Label(frame, text="", wraplength=400)prediction_label.grid(row=4, column=0, columnspan=4)root.mainloop()ПриложениеБ. Кодклассадлятестированияimport numpyas npclass TestRegression:@staticmethoddef test_calculate_prediction():"""Тестированиефункцииcalculate_prediction.Проверяет, правильнолифункциявычисляетпрогнозноезначение. """# Тестовыекоэффициентыcoefficients = np.array([1.5, 0.6])# Тестовыйгодyear_test = 6# Вычислениепрогнозногозначенияprediction = TestRegression.calculate_prediction(year_test, coefficients)# Ожидаемоепрогнозноезначениеexpected_prediction = 5.1# Проверкасовпадениявычисленногоиожидаемогопрогнозныхзначенийassert np.isclose(prediction, expected_prediction), "Ошибкавфункцииcalculate_prediction"@staticmethoddef calculate_prediction(year, coefficients):"""Вычислениепрогнозногозначениянаосновегодаикоэффициентоврегрессии. """return coefficients[0] + coefficients[1] * year@staticmethoddef test_validate_input():"""Тестированиефункцииvalidate_input.Проверяет, корректнолифункцияпроверяетвводимыеданные. """# Проверкаразличныхкомбинацийвводимыхлетassert TestRegression.validate_input(2018, 2020) == True, "Ошибкавфункцииvalidate_input"assert TestRegression.validate_input(2020, 2018) == False, "Ошибкавфункцииvalidate_input"assert TestRegression.validate_input(2016, 2020) == False, "Ошибкавфункцииvalidate_input"assert TestRegression.validate_input(2017, 2020) == True, "Ошибкавфункцииvalidate_input"@staticmethoddef validate_input(start_year, end_year):"""Проверкакорректностивводимыхданныхпользователем.Начальный год не должен быть больше конечного, и должны быть введены корректные данные."""if start_year > end_year:return False if start_year < 2017:return False return True@staticmethoddef calculate_regression(x, y):"""Вычислениекоэффициентоврегрессии. """# Созданиематрицы A длярешенияуравнения Ax = yA = np.ones((len(x), 2)) A[:, 1] = x# Вычислениекоэффициентовсиспользованиемметоданаименьшихквадратовb = np.linalg.lstsq(A, y, rcond=-1)[0]return b@staticmethoddef test_calculate_regression():"""Тестированиефункцииcalculate_regressionиоценкапогрешностирешения.Проверяет, правильнолифункциявычисляеткоэффициентырегрессии. """# Тестовыеданныеx_test = np.array([1, 2, 3, 4, 5])y_test = np.array([2, 4, 5, 4, 5])# Вычислениекоэффициентоврегрессииcoefficients = TestRegression.calculate_regression(x_test, y_test)# Ожидаемыекоэффициентыexpected_coefficients = np.array([2.2, 0.6])# Проверкасовпадениявычисленныхиожидаемыхкоэффициентовif not np.allclose(coefficients, expected_coefficients):print(f"Фактическиекоэффициенты: {coefficients}")print(f"Ожидаемыекоэффициенты: {expected_coefficients}")assert False, "Ошибкавфункцииcalculate_regression"# Оценкапогрешностирешенияy_predicted = coefficients[0] + coefficients[1] * x_testrmse = np.sqrt(np.mean((y_test - y_predicted) ** 2))print(f"Среднеквадратичноеотклонениерегрессии: {rmse:.4f}")# Тестированиеif __name__ == "__main__": test = TestRegression()print("\nТестированиефункцииcalculate_prediction...")test.test_calculate_prediction()print("Функцияcalculate_predictionпротестированауспешно!")print("\nТестированиефункцииvalidate_input...")test.test_validate_input()print("Функцияvalidate_inputпротестированауспешно!")print("Тестированиефункцииcalculate_regression...")test.test_calculate_regression()print("Функцияcalculate_regressionпротестированауспешно!")

Список литературы
1. Нагаева О.С., Поподько Г.И. Сравнительный анализ производительности труда в ресурсных и нересурсных регионах России // Экономика труда. – 2019. – Том 6. – № 4. – С. 1299-1316. – doi: 10.18334/et.6.4.41271.
2. Коробова А.В. Методика анализа производительности труда в торговых организациях // Молодой ученый. — 2018. — № 21 (207). — С. 249-251. — URL: https://moluch.ru/archive/207/50831/ (дата обращения: 04.04.2024).
3. Марцин В.С. Экономика торговли. – К.: «Знания», 2006. – [Электронный ресурс] – Режим доступа: http://uchebnikirus.com/ekonomika/ekonomika_torgivli_-martsin_bc/ekonomika_torgivli-_martsin_bc.htm
4. Управление производством // [Электронный ресурс] – Режим доступа: https://up-pro.ru/encyclopedia/analiz-proizvoditelnosti/ (дата обращения: 04.04.2024).
5. Факторный анализ: все темы // Национальный институт труда. – [Электронный ресурс] – Режим доступа: https://www.nitt.by/aktual/vse-temy/faktornyy-analiz-povysheniya-proizvodite (дата обращения: 04.04.2024).
6. Росстат. Промышленное производство в 2021 году: [Электронный ресурс] – Режим доступа: https://rosstat.gov.ru/storage/mediabank/Prom_proiz-vo_2021.pdf (стр. 17) – (дата обращения: 04.04.2024).