Отчет_Практика2_Вариант7
.docxМИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ
И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное бюджетное образовательное учреждение
высшего образования
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М. А. БОНЧ-БРУЕВИЧА»
(СПбГУТ)
ОТЧЁТ
о практическом занятии № 2
«Получение и исследование аналитической модели
элемента киберфизической системы
путём регрессионного анализа результатов моделирования»
Вариант № 7
Выполнил: студент группы ___________ /____________/
Проверил: _____________ /____________/
Санкт-Петербург
2026
1. Цель работы
Получение практических навыков построения аналитических моделей функционирования элементов киберфизических систем (КФС) на основе регрессионного анализа результатов имитационного моделирования, а также выбора наиболее адекватной формы уравнения регрессии.
2. Исходные данные
Одним из показателей процесса создания сети передачи данных (ПС СПД) между телекоммуникационным оборудованием и его цифровым двойником является её стоимость S. Была разработана имитационная модель, позволяющая оценить стоимость ПС СПД от её характеристик:
— x1 — количество основных каналов связи;
— x2 — количество резервных каналов связи;
— x3 — время обслуживания заявки;
— x4 — средняя наработка до отказа канала связи;
— x5 — ёмкость буфера.
По результатам 30 экспериментов с различными значениями входных параметров получены значения стоимости S (файл Задание7.xlsx). Требуется методом регрессионного анализа получить аналитическую модель вида S = f(x1, x2, x3, x4, x5).
2.1. Таблица исходных данных
№ экс. |
x1 |
x2 |
x3 |
x4 |
x5 |
S |
1 |
1 |
5 |
3 |
180 |
4 |
25285 |
2 |
1 |
5 |
2 |
360 |
3 |
40522 |
3 |
3 |
5 |
4 |
300 |
6 |
39670 |
4 |
1 |
3 |
4 |
120 |
2 |
22288 |
5 |
5 |
5 |
6 |
180 |
3 |
32802 |
6 |
3 |
2 |
7 |
300 |
2 |
34960 |
7 |
4 |
6 |
4 |
300 |
2 |
42360 |
8 |
5 |
2 |
6 |
180 |
1 |
28080 |
9 |
7 |
4 |
5 |
300 |
4 |
45950 |
10 |
3 |
6 |
0 |
240 |
10 |
35700 |
11 |
6 |
2 |
9 |
420 |
5 |
50160 |
12 |
6 |
4 |
2 |
360 |
2 |
49080 |
13 |
5 |
8 |
5 |
300 |
6 |
47444 |
14 |
6 |
1 |
3 |
240 |
4 |
35170 |
15 |
4 |
8 |
2 |
120 |
4 |
30180 |
16 |
3 |
4 |
3 |
300 |
5 |
38570 |
17 |
4 |
5 |
1 |
120 |
8 |
26990 |
18 |
8 |
2 |
3 |
60 |
8 |
25765 |
19 |
4 |
5 |
4 |
120 |
9 |
26810 |
20 |
8 |
4 |
2 |
300 |
6 |
46080 |
21 |
3 |
3 |
4 |
120 |
1 |
21010 |
22 |
7 |
3 |
5 |
240 |
6 |
39850 |
23 |
7 |
10 |
2 |
300 |
6 |
54380 |
24 |
6 |
5 |
3 |
300 |
2 |
45170 |
25 |
5 |
3 |
2 |
300 |
4 |
40680 |
26 |
4 |
5 |
6 |
240 |
2 |
35740 |
27 |
3 |
4 |
8 |
300 |
6 |
37920 |
28 |
5 |
3 |
5 |
300 |
4 |
43150 |
29 |
3 |
2 |
2 |
180 |
3 |
27086 |
30 |
4 |
8 |
7 |
300 |
4 |
44500 |
3. Методика регрессионного анализа
Для определения коэффициентов уравнения регрессии используется метод наименьших квадратов (МНК). Сущность метода заключается в минимизации суммы квадратов отклонений значений выходного параметра, рассчитанных по уравнению регрессии, от значений, полученных в эксперименте:
S = Σ ( ŷ_i − y_i )² → min,
где y_i — значение выходного параметра в i-м опыте, ŷ_i — значение, рассчитанное по уравнению регрессии.
В матричной форме коэффициенты уравнения регрессии вычисляются по формуле:
C = (XᵀX)⁻¹ Xᵀ Y,
где X — матрица значений факторов (с добавленным столбцом единиц), Y — вектор экспериментальных значений S.
Адекватность модели оценивается коэффициентом детерминации R²:
R² = C_R / C_Y,
где C_R — сумма квадратов, объяснённая регрессией, C_Y — общая сумма квадратов отклонений от среднего значения. Модели с R² > 0,8 признаются адекватными. Значение R² = 1 означает функциональную зависимость между переменными.
4. Линейная модель
Исследуемое уравнение линейной регрессии имеет вид:
S = c0 + c1·x1 + c2·x2 + c3·x3 + c4·x4 + c5·x5.
В результате расчёта получены коэффициенты:
Коэффициент |
Значение |
c0 |
4036.3143 |
c1 |
1785.9174 |
c2 |
1235.6920 |
c3 |
-98.6988 |
c4 |
81.1216 |
c5 |
22.0170 |
Коэффициент детерминации:
R² = 0.986715
Скорректированный R² = 0.983948
Итоговое уравнение линейной регрессии:
S = 4036.31 + 1785.92·x1 + 1235.69·x2 + (-98.70)·x3 + 81.12·x4 + 22.02·x5.
Рисунок 1 — Линейная модель: прогноз vs эксперимент
Рисунок 2 — График остатков линейной модели
Анализ графика остатков показывает, что они распределены относительно нулевой линии без выраженного тренда, что подтверждает адекватность выбранной формы модели.
5. Неполный квадратный полином (НКП)
В неполный квадратный полином дополнительно включены попарные произведения факторов:
S = Σ c_j·x_j + Σ Σ c_{jq}·x_j·x_q.
Число коэффициентов уравнения НКП: 16.
R² = 0.991767
Скорректированный R² = 0.982947
6. Полный квадратный полином (ПКП)
В полный квадратный полином дополнительно включены квадраты факторов:
S = Σ c_j·x_j + Σ Σ c_{jq}·x_j·x_q + Σ c_{jj}·x_j².
Число коэффициентов уравнения ПКП: 21.
R² = 0.993393
Скорректированный R² = 0.978712
7. Сравнение моделей и выбор наилучшей
Модель |
Число коэфф. |
R² |
Скорр. R² |
Линейная |
6 |
0.986715 |
0.983948 |
НКП |
16 |
0.991767 |
0.982947 |
ПКП |
21 |
0.993393 |
0.978712 |
Рисунок 3 — Сравнение моделей по R² и скорректированному R²
8. Выводы
1. Проведён регрессионный анализ результатов 30 экспериментов с имитационной моделью ПС СПД. Построены три формы уравнения регрессии: линейная, неполный квадратный полином (НКП) и полный квадратный полином (ПКП).
2. Все три модели показали высокие значения коэффициента детерминации: R²(лин) = 0.9867, R²(НКП) = 0.9918, R²(ПКП) = 0.9934. Это свидетельствует об адекватности всех построенных моделей (R² > 0,8).
3. При переходе от линейной модели к НКП и ПКП прирост R² невелик (менее 1 %), при этом число коэффициентов возрастает с 6 до 16 и 21 соответственно, что повышает риск переобучения модели.
4. По принципу экономии (parsimony) для дальнейшего использования принята линейная модель, как наиболее простая и при этом обладающая высокой адекватностью.
5. Итоговая аналитическая модель стоимости ПС СПД:
S = 4036.31 + 1785.92·x1 + 1235.69·x2 + (-98.70)·x3 + 81.12·x4 + 22.02·x5.
Приложение А. Листинг программы
Ниже приведён фрагмент кода на языке Python, реализующий расчёт коэффициентов регрессии и оценку адекватности моделей.
import numpy as np
import pandas as pd
from numpy.linalg import lstsq
from itertools import combinations
df = pd.read_excel('Задание7.xlsx', header=0)
X = df.iloc[:30, 1:6].values.astype(float)
Y = df.iloc[:30, 8].values.astype(float)
n, m = X.shape
def regression(X_mat, Y_vec):
C, *_ = lstsq(X_mat, Y_vec, rcond=None)
Y_pred = X_mat @ C
Y_mean = np.mean(Y_vec)
SS_tot = np.sum((Y_vec - Y_mean) ** 2)
SS_reg = np.sum((Y_pred - Y_mean) ** 2)
return C, Y_pred, SS_reg / SS_tot
# Линейная модель
X_lin = np.hstack([np.ones((n, 1)), X])
C_lin, _, R2_lin = regression(X_lin, Y)
# НКП
X_nkp = X_lin.copy()
for i, j in combinations(range(m), 2):
X_nkp = np.hstack([X_nkp, (X[:, i] * X[:, j]).reshape(-1, 1)])
C_nkp, _, R2_nkp = regression(X_nkp, Y)
# ПКП
X_pkp = X_nkp.copy()
for i in range(m):
X_pkp = np.hstack([X_pkp, (X[:, i] ** 2).reshape(-1, 1)])
C_pkp, _, R2_pkp = regression(X_pkp, Y)
