Мета та підготовка
Дослідити, за яких ваг змінюється рекомендація, і створити протокол рішення з обґрунтованими межами. Потрібно знати нормалізовані критерії, зважену суму та розв’язування лінійного рівняння. Використайте Python 3.11 або новіший; створіть sensitivity-lab/demo.py і таблицю результатів. Для демонстрації пакети не потрібні.
Теоретичний мінімум
Для двох критеріїв ваги та зберігають суму одиниця. Показник різниці визначає переможця. Додатна різниця означає перевагу A, від’ємна — B, нульова — нічию. Поріг знаходять рівнянням . Важливо перевірити, чи він лежить у допустимому діапазоні .
Нехай A=(0.9,0.4), B=(0.5,0.8). Різниця дорівнює , тому поріг 0.5. Якщо вважаємо можливим діапазон 0.55–0.7, A зберігає перевагу. Для діапазону 0.45–0.55 рекомендація змінюється. Сам вибір діапазону потребує підстав: погодження учасників рішення або спостережуваної невизначеності переваг.
Повний демонстраційний код
from math import isfinite
scores = {"A": (0.9, 0.4), "B": (0.5, 0.8)}
def score(point, weight):
if not isfinite(weight) or not 0 <= weight <= 1:
raise ValueError("Вага має бути від 0 до 1")
return weight * point[0] + (1 - weight) * point[1]
for step in range(11):
w = step / 10
a, b = score(scores["A"], w), score(scores["B"], w)
delta = a - b
winner = "tie" if abs(delta) < 1e-9 else ("A" if delta > 0 else "B")
print(f"{w:.1f}: A={a:.3f}, B={b:.3f}, winner={winner}")
assert abs(score(scores["A"], 0.5) - score(scores["B"], 0.5)) < 1e-9
Цикл створює сітку ваг від 0 до 1 з кроком 0.1. Форматування обмежує знаки лише під час виводу, а розрахунок використовує повне значення. Очікується B для ваг нижче 0.5, tie для 0.5, A вище. Сітка допомагає побачити зміну; алгебраїчний поріг забезпечує точнішу перевірку, оскільки між вузлами сітки також можуть бути переходи.
Покрокове виконання
Обчисліть оцінки вручну для 0, 0.5 та 1. Запустіть програму й зіставте результати. Зменшіть крок до 0.01 біля порогу. Запишіть, чи змінилися висновки, а не лише кількість рядків. Потім змініть одну оцінку A з 0.9 на 0.85 і знайдіть новий поріг рівнянням. Не змінюйте одночасно вагу й кілька оцінок без окремого сценарію.
Підготуйте сценарій з похибкою оцінки доступності. Позначте мінімальне й максимальне значення та перерахуйте обидва випадки. Якщо дані нормалізуються відносно набору альтернатив, перевірте також вплив зміни мінімуму й максимуму. Назвіть, які параметри залишено фіксованими. Це дозволяє пояснити причину переходу переможця.
Самостійне завдання
Візьміть власну задачу з попередньої роботи або створіть чотири альтернативи з трьома критеріями. Виберіть одну вагу для дослідження, а решту перенормуйте за явно описаним правилом. Дослідіть щонайменше десять значень, знайдіть переходи й перевірте їх додатковими обчисленнями. Створіть два змістовні сценарії зміни даних.
Фінальний протокол має містити базовий рейтинг, діапазон ваг, умови зміни рекомендації та перелік даних для уточнення. Якщо переможець нестійкий, сформулюйте умовний висновок. Додатковий варіант: порівняйте зважену суму з відстанню до ідеалу й поясніть припущення кожної моделі. Готового рішення вашої предметної області демонстрація не містить.
Типові помилки та налагодження
Неперенормовані решта ваг змінюють суму й зміст оцінки. Груба сітка може пропустити короткий інтервал переваги. Порівняння дробів через == створює штучну відсутність нічиєї. Висновок «стійко» без діапазону не перевіряється. Налагодження починайте з крайніх ваг: при результат повинен залежати тільки від першого критерію.
Результат і контрольні питання
Подайте код, таблицю, алгебраїчний розрахунок одного порогу та протокол. Поясніть, чому незмінність за вагами не захищає від помилки вихідних даних. Яке правило використано для інших ваг? Чи перевірено всі переходи? Які додаткові факти можуть зробити рекомендацію обґрунтованішою?
Побудова протоколу чутливості
Для кожного значення ваги зберігайте обидві оцінки, їх різницю й позначення переможця. Різниця зручніша для аналізу порогу, ніж лише ім’я альтернативи. Біля нуля використайте визначений допуск і поясніть його відповідність шкалі. Чисельний допуск не повинен поглинати змістовно важливу різницю.
Побудуйте графік різниці від ваги та позначте алгебраїчний поріг. Якщо сітка не потрапляє точно на нього, графік і рівняння все одно мають узгоджуватися. Зміна кроку покращує деталізацію спостереження, але не змінює саму лінійну залежність. Для нелінійної власної моделі опишіть, чому одного рівняння може бути недостатньо.
Запропонуйте інтервал правдоподібних ваг, а не довільний набір. Якщо весь інтервал лежить з одного боку порогу, рішення стійке до цієї невизначеності. Якщо інтервал перетинає поріг, наведіть обидві області вибору. Поясніть, які предметні дані допоможуть звузити інтервал.
У звіті відділіть перевірений фактор від інших ризиків. Стійкість щодо ваги не гарантує правильності виміряних оцінок чи повноти альтернатив. Додайте один сценарій зміни первинного значення, зберігаючи решту параметрів, і поясніть його причину. Так протокол дає змістовну відповідь, які уточнення справді важливі для рішення.
Схема процесу
Фіксуємо початкові оцінки й ваги.
Самоперевірка
Як обґрунтувати відповідь своїми словами?
Підсумок
Аналіз чутливості робить рекомендацію умовною й прозорою. Перевірка крайніх значень, нічиїх і порогів допомагає пояснити модель. Стійкість оцінюють лише в обґрунтованому діапазоні перевірених змін.