Ббк 22. 172я73 Рецензент д-р фіз мат наук, проф. Козаченко Ю. В



Сторінка2/3
Дата конвертації22.02.2017
Розмір0.49 Mb.
1   2   3

Price — Вартість будівництва в млн. $ у цінах 1976 року. D — час, за планом відведений на будівництво. T1 — час між звертанням за дозволом і отриманням дозволу на будівництво. T2 — час між отриманням ліцензії та дозволом на будівництво. S — номінальна потужність електростанції, Мвт. PR — наявність в тій же місцевості раніше побудованої електростанції (якщо значення = 1, то маємо вже побудовану станцію). NE — характеристика (в геологічному відношенні) району, в якому планується побудувати станцію. CT — використання нагрівальної башти (якщо = 1, то використовується, якщо 0 — ні). BW — використання силової установки виробництва фірми Babcock-Wilcox (якщо значення = 1, то використовується установка цієї фірми, 0 — ні). N — сумарна кількість електростанцій, які побудував архітектор-інженер станції. PT — електростанції, які будуються під частковим наглядом (PT=1, якщо нагляд є, PT=0, якщо нагляду нема).

Необхідно: 1) Побудувати лінійну регресійну модель залежності ціни Price від змінних D, T1, T2, S, PR, NE, CT, BW, N, PT .

2) Залучити до моделі тільки найбільш значущі змінні, проаналізувати залежність саме від них.

2) Проаналізувати залишки моделі.

3) Проаналізувати викиди даних.

4)Передбачити величину капітальних витрат на будівництво нової станції.



  1. Отже, специфікація моделі задається у вигляді



Виконаємо послідовність команд Statistics->Multiple Regression, вкажемо, що Price – залежна змінна, всі інші-незалежні. Натиснемо ОК.



На закладці Quick натиснемо кнопку Summary:Regression results. Отримаємо такі результати.

Як ми бачимо, незначущими є змінні T1, T2, PR, CT, BW, N, PT. Коефіцієнт детермінації . Претендентами на пояснювальні змінні є D,S, NE. Але ми будемо включати або виключати змінні за доп. «Регресії вперед» та «Регресії назад». На вкладці Advanced відмічаємо Advanced options (stepwise or ridge regression), OK.

Далі на вкладці Stepwise відмічаємо Method: Forward stepwise; F to enter 1; F to remove 0. Display results: At each step. Це означає, що ми запускаємо процедуру поступового включення змінних: спершу, перебираючи всі регресори, будуємо модель простої регресії і перевіряємо: яке значення F-критерію Фішера при перевірці гіпотези про незначущість змінної є найбільшим. Таку змінну ми залучаємо до множини регресорів.

Натискаємо Summary: Regression results. (Правда, перший раз може з’явитись попередження, що немає жодної змінної – це нормально, клацаємо на кнопку Next і дивимось на Summary Results.)



Знов робимо Next і дивимось на Summary Results, до змінної D додалась S.





Здійснюємо ще кілька кроків по залученню змінних, отримуємо результат, де в наявності вже є незначуща змінна.



Отже, з 11 регресорів ми обрали 6. Тепер будемо поступово виключати з цього набору покроково ту змінну, яка має найменше значення F-критерію Фішера.

Задаємо нову регресійну модель. Відмічаємо змінні – регресорами вже будуть змінні D, S, PT, NE, T2, PR. На вкладці Stepwise - відмічаємо Method: Backward stepwise; F to enter 11; F to remove 10. Display results: At each step. OK.

Натискаємо на Next і на Summary: Regression Results; повторюємо стільки разів, скільки треба, слідкуючи за коефіцієнтом детермінації – щоб він залишався достатньо великим. Зупиняємось на такому оптимальному варіанті.



Будуємо ще одну регресійну модель – стандартну, регресорами якої будуть D, S, NE, PT. На вкладці Stepwise - відмічаємо Method: Standard. Оцінки будуть такі самі, як і в попередній таблиці. Маємо таку регресійну модель:



.
Бачимо, що оцінки коефіцієнтів мають правильні знаки – ціна тим вища, чим більший відрізок часу відведений на будівництво, більша номінальна потужність станції і чим менший нагляд над будівництвом.

Тепер побудуємо матричну діаграму розсіювання даних. Оберемо на верхній панелі Graphs->Matrix Plots. Вибираємо змінні, для яких ми хочемо побудувати діаграму розсіювання, обираємо Graph type: Square Scatter Matrix. Отримуємо попарні діаграми розсіювання, на діагоналі знаходяться гістограми.

Між регресорами D та S не спостерігається мультиколінеарність, для моделі це добре. Видно, що Price залежить більш-менш лінійно від D та S, в усякому разі не спостерігається яскраво вираженої нелінійної залежності між ними.

2) Тепер проаналізуємо нормальність залишків моделі. В результатах переходимо на закладку Residuals/assumptions/prediction

Потім переходимо на закладку Residuals. Натискаємо на Casewise plot of residuals. Натискаємо на кнопку Perform residual analysis.






Отримуємо табличку залишків. Перевіряємо, чи виходять залишки за межі інтервалу , де - емпіричне середньоквадратичне відхилення залишків (на графіку залишок позначений *). Бачимо, що не виходять. Значення залишків знаходяться в третьому стовпчику таблиці. Середнє і медіана залишків=0.

Далі натискаємо Probability plot ->Normal plot of residuals.




І отримуємо такий графік. Це є P-P діаграма порівняння залишків моделі з нормальним розподілом. Як ми бачимо, цілком вірогідно припустити, що залишки розподілені нормально – розкид не дуже великий.


3) Проаналізуємо викиди. Виберемо закладку Outliers.

Натиснемо Casewise plot outliers.



Як ми бачимо, 19-те спостереження ідентифікується як викид.

Якщо ми «відключимо» 19-те спостереження за допомогою SELECT CASES, то регресія теж зміниться і з’являться ще 2 викиди: спостереження 10 та 12.

Чи враховувати ці 3 спостереження в моделі чи ні? Однозначної відповіді немає. Можливо, замовник моделі, фахівець, який займався збором інформації щодо характеристик електростанцій, має свою думку щодо цього. Припустимо, він вважає, що 19 спостереження треба вилучити, а 10 та 12 залишити.


Тоді остаточно маємо модель:


Зауважимо, що при бажанні вилучити з нашої моделі вільний член, можна поступити наступним чином. На вкладці Advanced відмічаємо Advanced options (stepwise or ridge regression) (ми це робили раніше), натискаємо OK. У віконці Intercept вибираємо Set to zero. Далі працюємо за планом, вільний член буде відсутній.



4) Нам залишається прорахувати прогноз для заданих значень регресорів, а також знайти інтервал надійності. Переходимо у закладку Residual/assumptions/prediction і натиснемо Predict dependent variable. У відповідні віконця вставляємо значення змінних D, S, NE, PT. Натискаємо ОК.



Отже, передбачуване значення для Price = 482,6. З ймовірністю 0,95 справжнє значення Price повинно потрапити в інтервал .


5. Нелінійна регресія
Припустимо, що з діаграми розсіювання даних видно, або це випливає з теорії – регресійна модель нелінійна:

.

Як підганяти такі дані? Розглянемо на прикладі.



Приклад 5.1. Першу змінну заповнимо числами від 1 до 10, другу – випадковими значеннями від 0 до 1 (це в нас випадкова похибка ε, вводимо її суто для моделювання), третя змінна

.

Потрібно отримати рівняння регресії для Var3 через Var1. Зрозуміло, що доцільно ввести в регресійну модель квадрат Var1. Переходимо Statistics->Advanced Linear/Nonlinear Models->Fixed nonlinear Regression. У вікні, що з’явилося, обираємо змінні Var1 та Var3.



Натискаємо ОК. Оскільки ми знаємо, що залежність квадратична, обираємо X**2.




З’явиться вікно Model Definition. Перейдемо на закладку Quick і вкажемо залежну змінну Var3, незалежні змінні - Var1 та V1**2. Будуємо регресійну модель покроково (Forward stepwise) з відкиданням незначущих змінних. В закладці Stepwise вказуємо значення F to enter - 1.0, F to remove – 0.01.


Натискаємо на Summary: Regression results.


Отже, маємо той самий результат, на який сподівались.

Приклад 5.2. Створимо файл з наступними змінними: X містить числа від 1 до 10, Var2 задається як , Var3 заповнимо випадковими значеннями від 0 до 1; Y задамо як Var2+Var3. Отже, ми задали штучно, що . Чи «розпізнає» таку залежність наш пакет, якщо ми задамо йому задачу підігнати дані у вигляді , обрати, виходячи з даних?
Переходимо Statistics->Advanced Linear/Nonlinear Models->Nonlinear Estimation. Далі обираємо User-specified regression, least squares. Натискаємо ОК.


Натискаємо на Function to be estimated.

У віконці Estimated function набираємо Y=a*Exp(b*X), натискаємо ОК. І ще раз ОК.



Нам пропонують, застосувавши МНК і отримавши відповідні трансцендентні рівняння, розв’язувати їх наближено за допомогою методу Левенберга-Маркварта, що насправді являє собою метод Ньютона. Оцінка похибки - , Максимальна кількість ітерацій – 50. Початкові значення для а та в можна задати, клацнувши на кнопку Start Value.

Потім натискаємо на Summary:Parameter estimates і маємо наступний результат.
Як ми бачимо, значення а та в дуже близькі до 1, як ми їх і задавали.


Зауваження 1. Можна за Estimation method взяти не Levenberq-Marquardt, a Rosenbrock and quasi-Newton, за loss function – (OBS-PRED)**2. В цьому випадку результатом підгонки будуть не тільки оцінені значення параметрів, а і відсоток поясненої дисперсії Variance explained – аналог коефіцієнта детермінації. Наприклад,

Відсоток поясненої дисперсії для цього прикладу становить 85,69 %. Він обчислюється для нелінійної моделі за формулою



.

Зауваження 2. Для побудови відповідного графіку необхідно перейти на закладку Residuals, натиснути на кнопку Save predicted and residual values. Треба відмітити змінні, разом з якими ми хочемо зберегти передбачені моделлю та спостережувані значення. Пакет створить окремий файл з відповідними змінними.

Потім переходимо по ланцюжку Graphs->Scatterplots->Multiply. Відмічаємо змінні X як Х, Y як Y та PREDICT. І графік побудований, нам заважають тільки 2 «підганяючі» прямі. Відмічаємо пряму чорним кольором, клацаємо на праву кнопку миші і натискаємо на Properties. Натискаємо Delete.



Приклад 5.3. Відкриємо файл Program.sta. Маємо список службовців, які вивчали певний програмний продукт, а потім здавали тестування, на виконання завдання тесту був відведений певний час. EXPERNCE - витрачений працівниками час на вивчення програми, SUCCESS – результати тестування. Треба побудувати залежність успішності виконання від часу вивчення.

Будемо шукати залежність у вигляді логістичної регресійної моделі:



,

де Y – успішність, X – час навчання, b0 , b1 – параметри, які необхідно оцінити. Тобто ми підганяємо змінну під біноміальний розподіл, ймовірність успіху в якому задається логістичною функцією, залежною від двох параметрів, а також від змінної – часу навчання.

Переходимо Statistics->Advanced Linear/Nonlinear Models->Nonlinear Estimation.

Обираємо Quick Logit Regression->OK. Вкажемо як залежну змінну SUCCESS, незалежну - EXPERIENCE. Натискаємо тричі ОК.





Отже, оцінка параметру b0 - -3,0597, параметру b1 – 0,16149. Сума квадратів залишків при підгонці – 12,71. В результаті перевірки за допомогою критерію максимальної правдоподібності досягнутий рівень значущості становить 0,0029 – змінна є значущою. Натиснувши Fitted 2D function & observed values, отримаємо графік логістичної регресійної функції, а також на графіку відкладені наші дані.



Натискаючи різні кнопки на закладці Residuals, можемо отримати значення залишків, їх гістограму, Q-Q діаграму і т.д.








Приклад 5.4. Поліноміальна регресія

Наведені дані містять середню мінімальну температуру січня в градусах Фаренгейта разом з географічною довготою і широтою 56-ти міст Сполучених Штатів. (Мається на увазі, що для кожного року з 1931 по 1960 щоденні мінімальні температури січня були додані разом і поділені на 31. Потім ці середні для кожного року були усереднені по 30 роках.) Дані знаходяться у файлі Polinomialna_reg.sta.



Назви змінних:

  1. City: Назва міста

  2. Temp: Середня мінімальна температура січня в градусах Фаренгейта за 1931-1960 рр.

  3. Lat: Географічна широта в градусах (на північ від екватора).

  4. Long: Географічна довгота в градусах (на захід від нульового меридіана)

Завдання. Виявити і побудувати оптимальну модель залежності Temp від Lat та Long.

Перше, що треба зробити для вивчення зв’язків між змінними – скористатися технікою візуального аналізу. Можна побудувати MatrixPlot. Видно, що між Temp та Lat – лінійна залежність, між Temp та Long – нелінійна або взагалі відсутня. Регресори вважаємо незалежними, мультиколінеарності немає на графіку, також це зрозуміло з теоретичних міркувань.




Для дослідження на мультиколінеарність побудуємо вибіркову кореляційну матрицю. Здійснимо шлях Statistics->Basic Statistics/Tables->Correlation matrices. OK. Відмічаємо One variable list. Відмічаємо Latitude та Longitude. ОК. Натискаємо на Summary.

Як ми бачимо, вибірковий коефіцієнт кореляції між Latitude та Longitude дорівнює 0,14. Це також свідчить про відсутність мультиколінеарності.
Рробимо лінійну «експрес-модель», попередньо розглядаючи змінні як потенційні регресори – чи будуть змінні значущими чи ні?

Як ми бачимо, модель досить непогана, обидві змінні значущі, але Latitude (широта) краще підходить на роль регресора, що входить до моделі лінійним чином. Коефіцієнт детермінації = 0,741.
Міркуємо: який вигляд залежності задати? Якщо ми побудуємо залежність широти від довготи, а яскравістю відмітимо теплішу або холоднішу температуру січня, то картина буде така:




Щодо вигляду залежності маємо такі теоретичні міркування. Від широти середня температура січня повинна залежати лінійно – чим далі на північ, тим холодніше.

Щодо довготи – то інша справа. Америка з заходу омивається Тихим, а зі сходу - Атлантичним океаном, і через цей вплив мінімальна температура січня на узбережжі вища. Тому слід очікувати нелінійну залежність Temp від довготи. Як задати цю нелінійну залежність? На діаграмі розсіювання даних видно, що можна спробувати задати поліноміальну залежність зі степенем полінома не нижче, ніж 3.


Також для аналізу залишків моделі використовують графік Predicted versus residuals. На закладці Residual/assumptions/prediction натискаємо на кнопку Perform residual analysis, а потім на Predicted vs. residuals. Отримуємо графік, на якому відкладаються залишки та значення Temp, передбачені моделлю. Вважається, що якщо модель побудована правильно, то дана діаграма розсіювання не буде містити ніякої закономірності, точки утворюватимуть безформну хмару. Якщо точки розташовані вздовж якоїсь кривої, то не всі закономірності залучені до моделі, ми повинні спробувати підібрати залежність в іншій формі.


Здається, що залишки розташовані вздовж кривої.

Будуємо модель залежності у вигляді


.
Застосуємо метод лінеаризації. Введемо ще 2 змінні: та . Побудуємо модель лінійної залежності Temp від Lat, Long, Long2, Long3.
Але пакет не хоче виконувати цю дію, скаржиться на наявність мультиколінеарності. Будуємо MatrixPlot для всіх регресорів, бачимо таку невтішну картину.
Безумовно, треба прибрати одну змінну. Вилучаємо Long3.



Маємо модель, яка краща, ніж просто лінійна, всі змінні значущі, коефіцієнт детермінації підвищився до 0,872.

Випишемо модель – формулу для прогнозування.

Побудуємо графік. Перейдемо на закладку Residuals/assumptions/prediction->Perform residual analysis->Save->Save residuals & predicted. Відмітити змінні, які будуть збережені в окремому файлі разом зі змінною Predicted – змінні Temp, Longitude, Latitude. OK.

Потім переходимо за шляхом: Graphs->3D XYZ Graphs->Scatterplots->Scatterplot. OK. Відмічаємо змінні:

X:Latitude; Y:Longitude; Z:Temp, Predicted. Отримуємо графік.



Схоже, що побудована модель непогана.
Якщо ми хочемо на діаграмі розсіювання подивитись – які саме спостереження спричинюють викид, то клацаємо на панелі меню на збільшувальне скло (Brushing). Справа з’являється панелька Brushing. В області Selection Brush відмічаємо Point. Далі клацаємо на діаграмі відповідну точку->На панельці натискаємо Update->На діаграмі відмічається номер (або назва) спостереження.
Також можна змінити точку, з якої ми дивимось на 3D-Scatterplot. Для цього клацаємо на головній панелі (3D-Rotation control). З’являється окрема картинка діаграми. Пересуваючи квадратик знизу, зліва чи зверху, можемо обертати графік навкруги вісі OZ, площини OXY та дивитись на графік на більшій чи меншій відстані відповідно. Для ефекту обертання треба натиснути на Analytic exploratory spin options.
Ще раз будуємо графік Predicted vs. residuals для знайденої моделі. Бачимо, що в залишках немає ніякої закономірності.


Припустимо, що місто знаходиться на широті 200 і довготі 800. На закладці Residuals/assumptions/prediction натискаємо на Predict dependent variables. Задаємо Lat 20, Long 80, Long2 теж доводиться задати вручну 6400.



Результат – 730 передбачена мінімальна температура січня.
1   2   3


База даних захищена авторським правом ©lecture.in.ua 2016
звернутися до адміністрації

    Головна сторінка