Ход работы
На основании экспериментальных данных и методики полного факторного эксперимента с помощью программы Python разработан алгоритм и программа расчета коэффициентов уравнения и регрессионного анализа (ПРИЛОЖЕНИЕ А);
Проведен расчет коэффициентов уравнения регрессии и составлено уравнение (таблица 3);
Выполнена проверка дисперсии на однородность по критерию Кохрена, результаты которой представлены в таблице 3;
Оценена значимость коэффициентов регрессии по критерию Стьюдента (таблица 3);
Проведена проверка полученной модели на адекватность по критерию Фишера, результаты которой представлены в таблице 3.
Результаты исследований
Таблица 3 – Результаты исследований
Исследование |
Результат |
Расчет коэффициентов уравнения регрессии |
b0 = 21,921; b1 = -3,566; b2 = 3,034 Уравнение
регрессии:
|
Оценка дисперсии воспроизводимости (оценка ошибки опыта) |
Выборочные дисперсии: S2_1 = 0,224, S2_2 = 0,080, S2_3 = 0,135, S2_4 = 0,168 sum_S2 = 0,608 Критерий Кохрена: G = 0,3693 Так как 0,3693 < 0,9065, то дисперсия однородна |
Оценка значимости коэффициентов по критерию Стьюдента |
S_vospr2 = 0.1520 tb0 = 112,468, tb1 = 18,297, tb2 = 15,565 Коэффициент регрессии b0 значим так как 112,468 > 2,78 Коэффициент регрессии b1 значим так как 18,297 > 2,78 Коэффициент регрессии b2 значим так как 15,565 > 2,78 Уравнение
будет иметь вид:
|
Проверка модели на адекватность по критерию Фишера |
Y = 22,454; 15,321; 28,521; 21,389 S_ost2 = 0,196 F = 1,289 Так как 1,289 < 3,8, уравнение регрессии адекватно |
Вывод: в ходе данной лабораторной работы освоены методы планирования эксперимента. На основании имеющейся входной информации о химико-технологическом процессе составлена матрица планирования для двух факторов: концентрации и температуры. На основании экспериментальных данных найдены коэффициенты уравнения регрессии и составлено уравнение. Проведена оценка дисперсии воспроизводимости по критерию Кохрена, который составил 0,3693 и так как 0,3693 < 0,9065, то дисперсия однородна. Оценена значимость коэффициентов по критерию Стьюдента: коэффициент регрессии b0 значим так как 112,468 > 2,78, b1 значим так как 18,297 > 2,78 и коэффициент регрессии b2 значим так как 15,565 > 2,78. Модель была проверена на адекватность по критерию Фишера, уравнение регрессии адекватно так как 1,289 < 3,8.
ПРИЛОЖЕНИЕ А
Программа расчета коэффициентов уравнения и регрессионного анализа
X0 = [+1, +1, +1, +1]
X1 = [-1, +1, -1, +1]
X2 = [-1, -1, +1, +1]
Y1 = [22.34, 15.3, 28.04, 21.32]
Y2 = [23.01, 14.9, 28.56, 21.9]
Y3 = [22.9, 15.13, 28.34, 21.55]
b0 = 0
b1 = 0
b2 = 0
n = 2
l = 2
numbers = l**n
L = n + 1
print("Расчет коэффициентов регрессии:")
Ysr = [i for i in range(numbers)]
for i in range(numbers):
Ysr[i] = (Y1[i] + Y2[i])/2
print(f"Ysr : [Ysr1 = {Ysr[0]:.3f}, Ysr2 = {Ysr[1]:.3f}, Ysr3 = {Ysr[2]:.3f}, Ysr4 = {Ysr[3]:.3f}]")
for i in range(numbers):
b0 = b0 + Ysr[i]/numbers
b1 = b1 + Ysr[i] *X1[i]/numbers
b2 = b2 + Ysr[i] *X2[i]/numbers
print(f"b0 = {b0:.3f}, b1 = {b1:.3f}, b2 = {b2:.3f}")
Yr = [i for i in range(numbers)]
for i in range(numbers):
Yr[i] = b0 + b1 * X1[i] + b2 * X2[i]
print(f"Yr : [Yr1 = {Yr[0]:.3f}, Yr2 = {Yr[1]:.3f}, Yr3 = {Yr[2]:.3f}, Yr4 = {Yr[3]:.3f}]")
print("Уравнение регрессии:")
print(f"Y^ = {b0:.3f} + {b1:.3f} * X1 + {b2:.3f} * X2, end='\n\n'")
# Регрессионный анализ
print("1. Оценка дисперсии воспроизводимости (оценка ошибки опыта)")
S2 = [i for i in range(numbers)]
for i in range(numbers):
S2[i] = (Y1[i]-Ysr[i])**2 + (Y2[i]-Ysr[i])**2
print(f"S2 : [S2_1 = {S2[0]:.3f}, S2_2 = {S2[1]:.3f}, S2_3 = {S2[2]:.3f}, S2_4 = {S2[3]:.3f}]")
S2_sum = sum(S2)
print(f"sum_S2 = {S2_sum:.3f}")
print("Критерий Кохрена:")
G = max(S2)/S2_sum
print(f"G = {G:.4f}")
Gt = 0.9065
if G < Gt:
print(f"Так как {G:.4f} < {Gt}, то дисперсия однородна", end='\n\n')
else:
print(f"Так как {G:.4f} > {Gt}, то дисперсия не однородна", end='\n\n')
print("2. Оценка значимости коэффициентов по критерию Стьюдента")
S_vospr2 = sum(S2)/numbers
print(f"S_vospr2 = {S_vospr2:.4f}")
Sb2 = S_vospr2/numbers
tb = [j for j in range(3)]
b = [b0, b1, b2]
for j in range(3):
tb[j] = abs(b[j])/Sb2**0.5
print(f"tb0 = {tb[0]:.3f}, tb1 = {tb[1]:.3f}, tb2 = {tb[2]:.3f}")
tt = 2.78
Y = [i for i in range(numbers)]
for j in range(3):
if tb[j] > tt:
print(f"Коэффициент регрессии b{j} значим так как {tb[j]:.3f} > {tt}")
elif tb[j] < tt:
print(f"Коэффициент регрессии b{j} не значим, так как {tb[j]:.3f} < {tt}, поэтому b{j} приравнивается к 0 и исключается из уравнения")
b[j] = 0
print(f"Уравнение будет иметь вид: Y^ = {b[0]:.3f} + {b[1]:.3f} * X1 + {b[2]:.3f} * X2")
print("3. Проверка модели на адекватность по критерию Фишера")
for i in range(numbers):
Y[i] = b[0] + b[1] * X1[i] + b[2] * X2[i]
print(f"Y = {Y[0]:.3f}, {Y[1]:.3f}, {Y[2]:.3f}, {Y[3]:.3f}")
S_ost2 = 0
for i in range (numbers):
S_ost2 += ((Ysr[i] - Y[i])**2) * 1/(numbers-L)
print(f"S_ost2 = {S_ost2:.3f}")
F = S_ost2/S_vospr2
print(f"F = {F:.3f}")
Ft = 3.8
if F < Ft:
print(f"Так как {F:.3f} < {Ft}, уравнение регрессии адекватно")
elif F > Ft:
print(f"Так как {F:.3f} > {Ft}, уравнение регрессии неадекватно")

= 21,921 - 3,566 * X1 + 3,034 * X2