Добавил:
свои люди в ТПУ Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛБ 6.docx
Скачиваний:
5
Добавлен:
06.06.2024
Размер:
63.94 Кб
Скачать

Приложение a

X0 = [+1, +1, +1, +1, +1, +1, +1, +1]

X1 = [+1, -1, +1, -1, +1, -1, +1, -1]

X2 = [+1, +1, -1, -1, +1, +1, -1, -1]

X3 = [+1, +1, +1, +1, -1, -1, -1, -1]

Y1 = [32.29, 25.8, 38.24, 19.5, 37.42, 42.54, 31.2, 46.7]

Y2 = [32.34, 26.0, 38.35, 19.52, 37.69, 42.94, 29.85, 46.1]

b0 = 0

b1 = 0

b2 = 0

b3 = 0

n = 3

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}, Ysr5 = {Ysr[4]:.3f}, Ysr6 = {Ysr[5]:.3f}, Ysr7 = {Ysr[6]:.3f}, Ysr8 = {Ysr[7]:.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

b3 = b3 + Ysr[i] *X3[i]/numbers

print(f"b0 = {b0:.3f}, b1 = {b1:.3f}, b2 = {b2:.3f}, b3 = {b3:.3f}")

Yr = [i for i in range(numbers)]

for i in range(numbers):

Yr[i] = b0 + b1 * X1[i] + b2 * X2[i] + b3 * X3[i]

print(f"Yr : [Yr1 = {Yr[0]:.3f}, Yr2 = {Yr[1]:.3f}, Yr3 = {Yr[2]:.3f}, Yr4 = {Yr[3]:.3f}, Yr5 = {Yr[4]:.3f}, Yr6 = {Yr[5]:.3f}, Yr7 = {Yr[6]:.3f}, Yr8 = {Yr[7]:.3f}]")

print("Уравнение регрессии:")

print(f"Y^ = {b0:.3f} + {b1:.3f} * X1 + {b2:.3f} * X2 + {b3:.3f} * X3", 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_5 = {S2[4]:.3f}, S2_6 = {S2[5]:.3f}, S2_7 = {S2[6]:.3f}, S2_8 = {S2[7]:.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.6798

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(4)]

b = [b0, b1, b2, b3]

for j in range(4):

tb[j] = abs(b[j])/Sb2**0.5

print(f"tb0 = {tb[0]:.3f}, tb1 = {tb[1]:.3f}, tb2 = {tb[2]:.3f}, tb3 = {tb[3]:.3f}" )

tt = 2.31

Y = [i for i in range(numbers)]

for j in range(4):

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 + {b[3]:.3f} * X3", end='\n\n')

print("3. Проверка модели на адекватность по критерию Фишера")

for i in range(numbers):

Y[i] = b[0] + b[1] * X1[i] + b[2] * X2[i] + b[3] * X3[i]

print(f"Y = {Y[0]:.3f}, {Y[1]:.3f}, {Y[2]:.3f}, {Y[3]:.3f}, {Y[4]:.3f}, {Y[5]:.3f}, {Y[6]:.3f}, {Y[7]:.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}, уравнение регрессии неадекватно")

Соседние файлы в предмете Моделирование химико-технологических процессов