Скачиваний:
0
Добавлен:
14.10.2026
Размер:
146 Кб
Скачать
☆

МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ

И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ

Федеральное государственное бюджетное образовательное учреждение

высшего образования

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М. А. БОНЧ-БРУЕВИЧА»

(СПбГУТ)

ОТЧЁТ

о практическом занятии № 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)