черняк
.pdfРис.13.57. Оцінена система рівнянь
Після оцінювання рівнянь користувач має можливість за допомогою меню View переглядати коваріаційні та кореляційні матриці коефіцієнтів, змінних моделі, перевіряти гіпотези про обмеження на коефіцієнти системи, виводити графіки залишків кожного з рівнянь, будувати графіки рівнянь системи.
373
Розділ 14. Розв'язання задач у середовищі Mathematica
14.1. Основні команди середовища Mathematica
Цей розділ підручника призначений допомогти користувачу в повсякденній роботі з Mathematica для розв'язання багатьох задач, особливо з економетрики. Ми маємо проілюструвати можливості пакету Mathematica для виконання конкретних завдань, які можуть виникати в економетристів. Крім цього, буде показано, як можна розробляти та використовувати самостійно написані програми.
Mathematica – це цілком інтегроване середовище для технічної роботи. Уперше воно вийшло друком у 1988 і зробило величезний крок уперед у використанні комп’ютерної техніки в багатьох галузях. Середовище Mathematica розробив Стефан Вольфрам (Stephen Wolfram) у компанії Wolfram Research під Windows-орієнтовані операційні системи. Програма являє собою стандартний MDI інтерфейс, тобто дозволяє одночасно працювати з кількома документами. Розглянемо основні команди меню, з якими працюватимемо доволі часто.
Серед основних пунктів меню слід зазначити:
|
|
Таблиця 14.1 |
|
|
|
Меню |
|
Дозволяє: |
Файл |
File |
створювати нові, записувати на диск, зчитувати з |
|
|
диску, роздруковувати файли з програмами та |
|
|
розрахунками. |
Редагув |
Edit |
здійснювати стандартні операції з копіювання, |
ати |
|
знищення, вставляння даних, відміни останньої |
|
|
операції. |
Чарунк |
Cell |
налаштовувати параметри чарунок |
а |
|
|
Формат |
For |
форматувати текст, документ, чарунки, змінювати |
|
mat |
шрифти, кольори тощо. |
Уведенн |
Inpu |
створювати форми для роботи з даними |
яt
Ядро |
Kern |
змінювати опції запуску програми обчислень, |
|
el |
робити розрахунки в заданій послідовності. |
Знайти |
Find |
здійснювати пошук у документі. |
Вікно |
Win |
переключатися між вікнами документів. |
|
dow |
|
Допомо |
Help |
отримувати підказку за всіма командами |
га |
|
середовища Mathematica. |
Кожна команда записується в окрему чарунку, яка праворуч відокремлена синім кольором. Для виконання команди слід поставити курсор у відповідну чарунку і натиснути клавішу Enter, яка розташована у правому нижньому куті клавіатури (такий самий ефект має комбінація клавіш Shift + Enter). Якщо треба записати в чарунку кілька команд (програми), то введення кожної з них має
374
закінчуватися натисканням клавіші Enter. Для активізації програми слід використовувати алгоритм активізації звичайної чарунки. Якщо треба виконати всі команди в усіх чарунках, то обирають команду
Ядро Обчислення Обчислення записної книги (Kernel Evaluation Evalua te Notebook).
Після активізації команди чи програми Mathematica приймає в чергу відповідну чарунку й дає їй відповідний номер у форматі In(X):, де Х – номер команди, яка виконується з початку роботи інтерпретатора команд Kernel. Після завершення обчислень видається результат у новій чарунці, яка має той самий номер Х: Out(X):. Кожній чарунці In(X): відповідає єдина чарунка Out(X), тому завжди легко знайти в документі відповіді на завдання програми. Для обнуління всіх змінних та даних достатньо вийти з Kernel і перезавантажити його.
Для здійснення арифметичних обчислень слід набрати необхідний вираз у чарунці, використовуючи знаки "+", "-", "*", "/","^" та дужки. Наприклад,
2+2 (12^2+30/6-1)*(9^(1/2)-1).
Для більш зручного представлення виразів їх можна набирати за допомогою спеціальних наборів символів, які можна визвати командою меню Файл Палитры (File Paletts) та вибором однієї з семи запропонованих таблиць. Залежно від необхідних символів користувач обирає одну з них. Для набору команд нашого курсу найбільш зручним буде вікно Basic Input. За допомогою нього останній вираз можна представити як
(122 306 1)*( 9 1) .
Значною перевагою Mathematica є можливість обробляти дуже великі числа. Наприклад,
100!
6^200.
Крім цього, значення виразів можна присвоювати змінним. Зауважимо, що назва змінної має починатися з літери, наприклад,
a = 6
Вирази, звичайно, можуть містити й змінні
(a + 3) (a - 3)
Якщо треба підрахувати значення виразу при якомусь значенні змінної, то можна зробити таким чином:
b ^ 2/. b 2 b 2
Замість b Mathematica підставить значення 2 і видасть відповідь 4. Усі функції Mathematica починаються лише з великої літери, а її параметри, на відміну від багатьох мов програмування, записано у квадратних дужках. Наприклад, Random[], яка видає випадкове число
375
від 0 до 1. Щоб випадкове число було згенеровано з деякого проміжку й мало визначений формат, цю функцію треба викликати з параметрами:
Random[Integer, {1, 100}] Random[Real, {0, 10}]
Важливою функцією є N, яка дозволяє перевести будь-який вираз у десятковий дріб з необхідною кількістю цифр після коми:
N[Pi, 200],
N[12/23, 7].
Узагальненням змінних є вектори, масиви та матриці. Щоб задати вектор, слід указати всі його елементи у фігурних дужках:
v1 = {1, 2, 3, 4}.
Вектор може містити елементи-вектори: v2 = {1, 2, {4, 5, 6}, 7, {2, 3, {1, 2}}, 8}.
Під матрицею розуміємо вектор, що містить однакові за довжиною елементи-вектори:
K = {{1, 2, 3}, {4, 5, 6}}.
Такий вираз являє собою матрицю з двома рядками та трьома стовпчиками. Щоб звернутися до деякого елементу матриці або вектора, треба вказати його координати в подвійних квадратних дужках:
v2[[1]], K[[1, 2]].
Якщо для матриці вказати лише одну координату, то результатом буде цілий рядок
K[[1]].
Для наочного представлення матриць і векторів використовують функцію MatrixForm:
MatrixForm[K].
Слід зазначити, що Mathematica по-різному інтерпретує добуток векторів. Якщо використовувати знак "*", то в результаті отримуємо поелементний добуток, а якщо знак "." – то скалярний добуток. Порівняйте:
q1={1, 2, 3}, q2={3, 4, 5}, q1*q2, q1.q2.
Для множення матриць найчастіше використовують знак ".":
A = {{1, 2}, {3, 4}},
B = {{2, 3}, {5, 6}}. A.B.
Функція Length повертає кількість елементів вектора:
Length[v1],
Length[K].
Функція Table дозволяє створити вектор або матрицю:
376
f1 = Table[i, {i, 1, 20}],
m1 = Table[(i+j)^2, {i, 1, 4}, {j, 1, 5}].
У першому прикладі створюють вектор, що містить числа від 1 до 20, у другому – будують матрицю розміру 4х5, кожна чарунка якої містить квадрат суми відповідного рядка та стовпчика.
Для визначення детермінанту матриці використовують функцію
Det: Det[A].
За допомогою функцій Transpose та Inverse знаходять транспоновану й обернену матриці, відповідно:
Transpose[A],
Inverse[A].
Для виділення першого або останнього елементів використовуються функції First та Last:
First[f1],
Last[f1].
Корисними слід уважати функції Take та Drop. Перша виокремлює з початку вектора кількість елементів, указаних у другому параметрі. Якщо він від'ємний, то елементи виокремлюються з кінця вектора. На відміну від цієї функції, Drop відкидає з вектора вказану кількість елементів. Якщо ця кількість від'ємна, то відкидаються останні елементи:
Take[f1, 4],
Take[f1, -4],
Drop[f1, 4],
Drop[f1, -4],
Для з'єднання кількох векторів використовують функцію Join: f2 = Join[f1, f1].
Сортування вектора здійснюють функцією Sort: f3 = Sort[f2]
Змінити порядок елементів на обернений дозволяє Reverse:
Reverse[f3]
Функції RotateLeft та RotateRigth зміщують усі елементи на відповідну кількість позицій ліворуч або праворуч:
RotateLeft[f3, 5],
RotateRight[f3, 3].
Велике значення у вивченні властивостей економічних змінних має графічний аналіз. Mathematica пропонує легкий і потужний механізм побудування діаграм. Найпростіший графік можна побудувати за допомогою функції Plot. Для цього слід указати всі функції, які треба побудувати, а також інтервал, на якому слід здійснити побудування:
Plot[{Sin[x]*Cos[2x], Log[x]}, {x, 1, 2*Pi}].
Функція ListPlot дозволяє будувати графік за значеннями кількох векторів, якщо інший не задано, то автоматично додається вектор з координатами 1, 2, 3, … тощо:
377
q = Table[Random[Integer, {1, 20}], {i, 1, 40}], ListPlot[q, PlotJoined True].
Нарешті, графік функції, заданої неявно, можна побудувати за допомогою функції ParametricPlot:
ParametricPlot[{Cos[5t], Sin[3t]}, {t, 0, 2*Pi}, AspectRatio Automatic]
Аналогічно графіки слід будувати в тривимірному просторі:
Plot3D[Sin[xy], {x, 0, 4}, {y, 0, 4}]
Важливу роль у середовищі Mathematica грають модулі. Справді, недоречно тримати у пам'яті комп'ютера всі відомі функції, більша частина з яких не потрібна користувачеві, тому було вирішено дозволити завантажувати функції тоді, коли вони потрібні. Користувач повинен указати назву модуля, у якому зберігаються відповідні програми та змінні. Для цього використовують оператор Get або скорочено "<<":
<<Statistics`LinearRegression`.
Відразу після "<<" слід указати назву папки, де міститься модуль, потім у лапках – назву модуля. Зверніть увагу на лапки: вони нестандартні!
Для визначення назв усіх функцій завантаженого модуля слід визвати функцію Names:
Names["Statistics`LinearRegression`*"].
Для виведення функцій, які мають відповідний правопис, також використовують функцію Names з маскою. Наступний приклад виводить усі функції, назва яких починається з R:
Names["R*"].
Часто доводиться працювати з різноманітними розподілами. Для цього призначено пакет
<<Statistics`ContinuousDistributions`.
За його допомогою можна викликати такі розподіли:
F-розподіл: FratioDistribution[regr1, regr2], t- розподіл: StudentTDistribution[regr],
2 – розподіл: ChiSquareDistribution[regr].
Нормальний розподіл: NormalDistribution[ , ]
Щоб знайти квантиль розподілу, використовують функцію Quantile: Quantile[StudentTDistribution[regr, 1-α/2].
14.2. Оцінка економетричних моделей
Найуживанішою функцію для економетричних розрахунків є функція Regress. Вона має три обов'язкові параметри та два необов'язкові.
На першому місці зазначають матрицю змінних, за якими будують регресію. Слід зауважити, що залежна змінна завжди має бути на останньому місці.
378
Другим параметром слугує список усіх змінних у відповідних формах, що входять до регресії.
Третій параметр указує на список дійсних змінних, що їх використовують. Список збігається з переліком незалежних змінних у матриці змінних.
Для другого та третього параметра слід обрати такі назви змінних, які не було використано раніше.
Розглянемо кілька прикладів запису функції Regress.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Таблиця 14.2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Вид регресії |
|
|
|
|
|
|
Другий |
Третій |
|||||||
|
|
|
|
|
|
|
|
параметр |
параметр |
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
y x |
|
|
|
|
|
|
{1,t} |
{t} |
|||||||
y 0 1x1 2x2 |
|
|
|
|
{1, t1, t2} |
{t1, t2} |
|||||||||||
y |
0 |
x |
|
x |
2 |
|
3 |
x2 |
|
|
{1, t1, t2, t1^2} |
{t1, t2} |
|||||
|
|
1 |
1 |
|
2 |
|
|
1 |
|
|
|
|
|
||||
y |
x |
|
x2 |
|
3 |
x2 ln x |
2 |
|
{1, t1, t1^2, |
{t1, t2} |
|||||||
0 |
|
1 |
1 |
|
|
2 |
1 |
|
|
|
1 |
|
|
t1^2*Log[t2]} |
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Якщо треба побудувати регресію без константи, маємо явно вказати це комп'ютеру:
Regress[Z, {t}, {t}, IncludeConstant False].
Функція Regress може містити ще один параметр RegressionReport – набір відповідних опцій, які вказують на те, які кількісні характеристики моделі треба показати на екрані.
|
Таблиця 14.3 |
|
|
|
|
Опція |
Описання |
|
BestFit |
Функція регресії |
|
BestFitParameters |
Параметри регресії |
|
ANOVATable |
Коваріаційно-дисперсійна таблиця |
|
EstimatedVariance |
Оцінка дисперсії залишків |
|
ParameterTable |
Оцінка моделі |
|
ParameterCITable |
Надійні інтервали для коефіцієнтів |
|
|
регресії |
|
ParameterConfidenceReg |
Надійна область для коефіцієнтів моделі |
|
ion |
|
|
FitResiduals |
Залишки моделі |
|
PredictedResponse |
Оцінки залежної змінної на основі |
|
|
регресії |
|
SinglePredictionCITable |
Надійні інтервали для прогнозних |
|
|
значень |
|
RSquared |
Коефіцієнт детермінації |
|
|
379 |
Опція |
Описання |
AdjustedRSquared |
Скоригований коефіцієнт детермінації |
CoefficientOfVariance |
Коефіцієнт варіації |
CovarianceMatrix |
Коваріаційна матриця |
CorrelationMatrix |
Кореляційна матриця |
Якщо параметр не вказано, то автоматично підраховуються
ParameterTable, ANOVATable, RSquared, AdjustedRSquared. Щоб змінити порядок виведення характеристик чи їхнього набору, треба вказати список необхідних опцій:
Regress[Z, {1, t}, {t}, RegressionReport {RSquared, ParameterTable, CorrelationMatrix, AdjustedRSquared, SinglePredictionCITable, MeanPredictionCITable, FitResiduals}]
Приклад 14.1. Оцінювання й аналіз регресії в середовищі
Mathematica
1. На основі наведених місячних даних (y – дохід фірми, млн грн; x1 – кількість працівників; x2 – кількість оброблених документів, тис. с., x3 – відношення зарплати президента фірми до середньої зарплати по фірмі)
y |
x1 |
x2 |
x3 |
62,4 |
37 |
0,87 |
60,6 |
|
|
9 |
0 |
105, |
51 |
2,74 |
63,7 |
9 |
|
2 |
5 |
152, |
55 |
3,39 |
45,3 |
8 |
|
3 |
8 |
144, |
64 |
3,62 |
91,0 |
8 |
|
5 |
0 |
159, |
75 |
3,63 |
73,2 |
2 |
|
5 |
3 |
159, |
81 |
3,72 |
33,8 |
0 |
|
4 |
1 |
159, |
85 |
3,87 |
33,8 |
0 |
|
1 |
7 |
184, |
85 |
4,37 |
19,9 |
2 |
|
9 |
3 |
181, |
87 |
4,40 |
99,6 |
8 |
|
7 |
9 |
166, |
88 |
4,61 |
63,9 |
5 |
|
3 |
8 |
188, |
90 |
4,63 |
83,5 |
4 |
|
8 |
0 |
190, |
91 |
4,63 |
75,5 |
2 |
|
9 |
4 |
380
y |
x1 |
x2 |
x3 |
192, |
91 |
4,74 |
90,8 |
8 |
|
3 |
2 |
196, |
93 |
4,79 |
47,9 |
5 |
|
5 |
8 |
196, |
94 |
4,88 |
82,6 |
7 |
|
9 |
2 |
202, |
98 |
4,91 |
19,5 |
5 |
|
1 |
8 |
193, |
101 |
5,25 |
71,1 |
6 |
|
6 |
6 |
236, |
101 |
5,47 |
96,9 |
0 |
|
6 |
0 |
237, |
111 |
5,63 |
78,9 |
1 |
|
3 |
2 |
230, |
114 |
5,74 |
86,9 |
5 |
|
0 |
7 |
230, |
115 |
5,75 |
47,2 |
9 |
|
0 |
3 |
251, |
119 |
5,76 |
46,9 |
3 |
|
2 |
4 |
256, |
125 |
5,95 |
34,7 |
1 |
|
7 |
8 |
260, |
129 |
6,00 |
55,9 |
6 |
|
1 |
1 |
258, |
132 |
6,01 |
86,6 |
4 |
|
7 |
3 |
268, |
134 |
6,15 |
83,1 |
8 |
|
3 |
8 |
277, |
137 |
6,60 |
89,4 |
6 |
|
9 |
0 |
311, |
164 |
7,17 |
64,9 |
1 |
|
8 |
1 |
337, |
167 |
7,96 |
23,4 |
7 |
|
2 |
0 |
359, |
171 |
8,62 |
59,3 |
9 |
|
4 |
8 |
381
Побудувати регресію вигляду yt 0 1x1t 2x2t t . Обчислити
коефіцієнт детермінації та скоригований коефіцієнт детермінації моделі. Перевірити модель на адекватність, 0,05 .
2.Перевірити гіпотезу 1 0,9 , 0,05 .
3.Перевірити модель на стійкість, розбивши всі спостереження на дві групи розмірами n1 10 , n2 20 , 0,05 .
4.Перевірити наявність гетероскедастичності за критерієм Голдфелда – Квондта, n1 9 , n2 9 , 0,05 .
5.Перевірити наявність гетероскедастичності за критерієм Уайта,
0,05 .
6.Перевірити наявність автокорельованості збурень, 0,05 .
Розв'язання
Для розв'язання всіх пунктів спочатку слід завантажити два модулі:
<<Statistics`LinearRegression`
<<Statistics`ContinuousDistributions`
Завантажуємо дані (зверніть увагу, що для введення дробових виразів слід використовувати знак крапка ".", а не кома):
x1 = {37, 51, 55, 64, 75, 81, 85, 85, 87, 88, 90, 91, 91, 93, 94, 98, 101, 101, 111, 114, 115, 119, 125, 129, 132, 134, 137, 164, 167, 171};
x2 = {0.8792, 2.742, 3.393, 3.625, 3.635, 3.724, 3.871, 4.379, 4.407, 4.613, 4.638, 4.639, 4.743, 4.795, 4.889, 4.911, 5.256, 5.476, 5.633, 5.74, 5.75, 5.762, 5.957, 6.001, 6.017, 6.153, 6.609, 7.178, 7.962, 8.624};
x3 = {60.6, 63.75, 45.38, 91., 73.23, 33.81, 33.87, 19.93, 99.69, 63.98, 83.5, 75.54, 90.82, 47.98, 82.62, 19.58, 71.16, 96.9, 78.92, 86.97, 47.23, 46.94, 34.78, 55.91, 86.63, 83.18, 89.4, 64.91, 23.4, 59.38};
y = {62.36, 105.9, 152.8, 144.8, 159.2, 159., 159., 184.2,181.8, 166.5, 188.4, 190.2, 192.8, 196.5, 196.7, 202.5, 193.6, 236., 237.1, 230.5, 230.9, 251.3, 256.1, 260.6, 258.4, 268.8, 277.6, 311.1, 337.7, 359.9};
На основі даних створюємо регресійну матрицю:
Z = Transpose[{x1, x2, x3, y}].
Будуємо регресію (зверніть увагу, що результат функції Regress
збережено в змінній r):
r = Regress[Z,{1, t1, t2, t3}, {t1, t2, t3}].
Вивід Mathematica має вигляд:
ParameterTable |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Estimate |
SE |
Tstat |
Pvalue |
||||||||||||||
|
1 |
|
4.43555 |
|
|
|
7.43955 |
|
|
0.596212 |
|
0.556189 |
|
|
|
|||||
|
t1 |
|
0.806571 |
|
|
0.2226885 |
|
|
3.55498 |
|
|
0.00147472 |
|
|
|
|||||
|
t2 |
|
24.7707 |
|
|
|
4.83389 |
|
|
5.12438 |
|
|
0.0000242097 |
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
382 |
|