Оцінка регресії

Для побудови регресії необхідно завантажити модуль Statistics`LinearRegression`. Він містить 
серед інших функції Regress та Fit, які ми будемо використовувати найбільш часто:

<< Statistics`LinearRegression`

Цей модуль необхідно завантажувати лише один раз під час роботи. 
Наступним кроком є завантаження необхідних змінних для аналізу. Припустимо, що необхідно 
побудувати регресію виду y=a0+a1*x+e. Тоді необхідно знати змінні x та y:

x = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
y = {10, 12, 14, 15, 16, 21, 19, 20, 17, 22}

Тепер формуємо матрицю змінних:

Z = Transpose[{x, y}]

Зауважте, що на останньому місті повинна стояти залежна змінна (в нашому випадку y). В 
результаті матриця Z має 10 рядків та 2 стовпчики. В загальному випадку кількість рядків 
дорівнює кількості спостережень, а кількість стовпчиків - загальній кількості змінних.
Для вибору вигляду регресії можна побудувати графік спостережень:

ListPlot[Z,  PlotJoined -> True]

Оцінка регресії здійснюється за допомогою функції Regress. Вона має 3 або 4 параметри. На 
першому місці вказується матриця змінних, по яких будується регресія (в нашому випадку, Z). 
Другим параметром слугує список всіх змінних, що входять до регресії. Третій параметр 
вказує на список дійсних змінних, що використовуються. При цьому для    другого та 
третього параметра повинні бути вибрані такі назви змінних, які ще не використовувалися 
раніше. Розглянемо все вищенаведене на прикладах.

({{Модель, Список, \(Дійсні\ змінні\)}, {y = a0+a1*x+e , {1, 
              t}, {t}}, {y = a0 + a1*x^2 + e, {1, t^2}, {t}}, {y = a0 + a1*x + a2*x^3 + e, {1, t,  t^3}, {t}}, {y = a0 + a1*x1 + a2*x2 + e, {1, t1, t2}, {t1, t2}}})

Таким чином, для побудови найпростішої лінійної регресії слід записати:

Regress[Z,  {1, t},  {t}]

Функція може містити ще один параметр - відповідні опції, які вказують на те, які числові 
характеристики моделі потрібно показати:

({{Опція, Опис}, {BestFit, \(Функція\ регресії\)}, {BestFitParameters, \(Параметри\ регресії\)}, {ANOVATable, \(Коваріаційно - дисперсійна\ таблиця\)}, {EstimatedVariance, \(Оцінка\ дисперсії\ залишків\)}, {ParameterTable, \(Оцінка\ моделі\)}, {ParameterCITable, \(Довірчі\ інтервали\ для\ коефіцієнтів\ регресії\)}, {ParameterConfidenceRegion, \(Довірча\ область\ для\ коефіцієнтів\ моделі\)}, {FitResiduals, \(Залишки\ моделі\)}, {PredictedResponse, \(Оцінки\ залежної\ змінної\ на\ основі\ регресії\)}, {SinglePredictionCITable, \(Довірчі\ інтервали\ для\ прогнозних\ значень\)}, {MeanPredictionCITable, \(Довірчі\ інтервали\ для\ прогнозних\ значень\ середнього\)}, {RSquared, \(Коефіцієнт\ детермінації\)}, {AdjustedRSquared, \(Скоригований\ коефіцієнт\ детермінації\)}, {CoefficientOfVariance, \(Коефіцієнт\ варації\)}, {CovarianceMatrix, \(Ковараційна\ матриця\)}, {CorrelationMatrix, \(Кореляційна\ матриця\)}})

Після виконання функції Regress "Mathematica" видає числові характеристики моделі. Якщо не вказані опції, то підраховуються ParameterTable, ANOVATable, Rsquared, AdjustedRSquared.  
Для того, щоб змінити порядок виводу характеристик чи іхнього набору, необхідно вказати список необіхдних опцій:

r1 = 
      Regress[Z,  {1,  t}, {t},  
        RegressionReport  -> {RSquared,  ParameterTable,  
            CorrelationMatrix,  AdjustedRSquared,  
            SinglePredictionCITable,  MeanPredictionCITable,  
            FitResiduals}]

Розглянемо тепер, які формули використовуються для підрахунку оцінок.

{\(ParameterTable - Таблиця\ параметрів\)->({{"", \(Estimate

                        Оцінки\), \("    SE"

                        Стандартне\ 

                        відхилення\), \("   TStat"

                        
                        t - статистика\), \(\(\ \ \ \ \ \ \ \)\("PValue"

                        \ \ \ \ Значення\ 

                        \ \ \ імовірнсоті\)\)}, {1,      (Subscript[b, 0]), \(\(\ \ \ \ \)\(SE \((b\_0)\)\)\), (Subscript[t, 0]) =  
                          (Subscript[b, 0])/SE ((Subscript[b, 0])), \(P \((\(|\)\(t \((n - 
                                    k)\)\)\(|\)\(\(≥\)\(\(|\)\(t\_\(\(0\)\(\ \)\)\)\(|\)\)\)\ )\)\)}, {t,      (Subscript[b, 1]), \(\(\ \ \ \ \)\(SE \((b\_1)\)\)\), (Subscript[t, 1])  = 
                          (Subscript[b, 1])/SE ((Subscript[b, 1])), \(P \((\(|\)\(t \((n - 
                                    k)\)\)\(|\)\(\(≥\)\(\(|\)\(t\_\(\(1\)\(\ \)\)\)\(|\)\)\)\ )\)\)}})

RSquared-\(Коефіцієнт\ детермінації\)->(R^2),	
\(AdjustedRSquared\  - \ Скоригований\ коефіцієнт\ детермінації -> R\&_\^2\),
\(EstimatedVariance - Оцінка\ дисперсії\ збурень -> s\^2\),

ANOVATable->({{"", \(\(\ \ \ \ \ \)\("DF"

                  Кількість\ 

                  степенів\ 

                  свободи\)\), "\:f39fSumOfSq\n  \:0421\:0443\:043c\:0438 \n\:043a\:0432\:0430\:0434\:0440\
\:0430\:0442\:0456\:0432", \(\(\ \)\(" MeanSq"

                  Середні\ суми\ 

                  \ \ квадратів\)\), \(" FRatio"

                  
                  F - статистика

                  \), \(\(\ \ \ \)\(" PValue"

                  \ \ \ \ \ \ Значення\ 

                  \ \ імовірнсоті\)\)}, {\("Model" \((Пояснена)\)\),   k - 
                    1,    ESS, ESS/(k - 
                        1),     ((ESS/(k - 
                            1))/(RSS/(n - 
                            k))), \(\(\ \)\(P \(\((F \((k - 1, 
                                n - k)\) ≥ F)\)\_\ \)\)\)}, {"Error(Залишки)",   n  - k,    RSS, RSS/(n - 
                        k), "", ""}, {"Total(Загальна)",   n - 
                    1,    TSS, "", "", ""}})

Іноді необхідно працювати з функцією регресії. Для її підрахунку використовується Fit. Її синтаксис аналогічний функції у Regress за виключенням того, що вона не містить опцій.

f = Fit[Z,  {1, t}, {t}]

Для аналізу зручно побудувати графік регресії:

Plot[f,  {t, 1, 20}]

Для того, щоб на графіку знаходилися як данні, так і регресія, слід використати наступний прийом.

<< Graphics`MultipleListPlot`

y1 = Table[f  /. t -> i,  {i, 1, Length[y]}]
Z1 = Transpose[{x, y1}]
\(MultipleListPlot[Z, Z1, \ PlotJoined -> {False, \ True}, 
      PlotStyle -> {RGBColor[0, 1, 0], \ RGBColor[1, 0, 0]}, \ 
      SymbolShape\  -> \ {PlotSymbol[Box], PlotSymbol[Triangle]}, \ 
      PlotLegend\  -> \ {"Реальні дані", \ "Регресія"}]\)

Для підрахунку похибок скористаємось данними побудованої регресії:

errors  =  FitResiduals  /.  r1

Для побудови на графіку надійних інтервалів слід знову використати функцію MaltipleListPlot. В цьому прикладі обрані 95% надійні інтервали. Спочатку створюється матриця з необхідних змінних: observed - реальне значення y, predicted - обчислене значення y за регресією, se - стандартна похибка, ci - надійні інтервали. Після цього визначаються нижня та верхня границі надійних інтервалів, і здійснюється побудова.

\(\({observed, \ predicted, \ se, \ 
          ci}\  = 
\ \ Transpose[\((SinglePredictionCITable\  /. \ 
                r1)\)[\([1]\)]];\)\)
predicted  =  Transpose[{x,  predicted}];
lowerCI  =  Transpose[{x,  Map[First,  ci]}];
upperCI  =  Transpose[{x,  Map[Last,  ci]}];
\(MultipleListPlot[Z, \ predicted, \ lowerCI, \ upperCI, 
\ 
      SymbolShape\  -> \ {PlotSymbol[Diamond], \ None, \ None, \ None}, 
\ 
      PlotJoined\  -> \ {False, \ True, \ True, \ True}, 
\ 
      PlotStyle\  -> \ {Automatic, \ Automatic, \ Dashing[{ .05, \  .05}], \ 
          Dashing[{ .05, \  .05}]}]\)

Самостійна робота

1. По даних побудувати просту лінійну регресію

x = {21, 12, 24, 13, 10, 16, 14, 5, 5, 3, 11, 8, 13, 9, 4, 16, 10, 
          21, 14};
y = {45, 42, 34, 46, 14, 20, 25, 29, 28, 33, 17, 39, 32, 19, 47, 36, 
          27, 24, 35};

2. За допомогою комп'ютера розв'язати задачі: 1.15-1.20

3. Розв'язати задачі: 1.1, 1.4, 1.5, 1.6, 1.7, 1.8.