Регрессия

Простейшая регрессия

В простейшей постановке в регрессионном анализа рассматриваются две выборки: детерминированных величин $\mathbf{x}=(x_1,\dots,x_I)$ и случайных величин $\mathbf{y}=(y_1,\dots, y_I)$.

Набор $\mathbf{x}$ называется предикторами, а набор $\mathbf{y} – откликами. Предполагается, что между этими величинами существует линейная связь вида

$$y_i=ax_i+b+ε_i$$

где $a$ и $b$ – неизвестные параметры, а $ε_i$ – ошибки, т.е. некоррелированные случайные величины, имеющие нулевое мат.ожидание и неизвестную дисперсию $\sigma^2$.

Если дополнительно предположить, что ошибки распределены нормально

$$ε_i \sim N(0, \sigma^2)$$

то оценивание параметров $a$ и $b$ методом максимального правдоподобия сведется к поиску минимума следующей суммы квадратов

$$Q(a, b) = \sum_{i=1}^I (y_i-ax_i-b)^2$$

Fig20
Рис.20 Простая регрессия

Метод наименьших квадратов

На практике допущение о нормальности является избыточным и метод наименьших квадратов применяют и в случае ошибок произвольного вида.

Минимум суммы $Q$ достигается в точке:

$$\hat{b} = \frac{ \sum_{i=1}^I (y_i-\bar{y})(x_i - \bar{x}) } {\sum_{i=1}^I (x_i - \bar{x})^2}$$ $$\hat{a} = \bar{y} - \hat{b}\bar{x}$$

Дисперсии оценок параметров равны:

$$\mathrm{V}(\hat{a}) = \frac{\sigma^2}{I} \frac{\sum_{i=1}^I x_i^2}{\sum_{i=1}^I (x_i-\bar{x})^2}$$ $$\mathrm{V}(\hat{b}) = \frac{\sigma^2} {I\sum_{i=1}^I (x_i-\bar{x})^2}$$

Оценка параметра $\sigma^2$ равна:

$$s^2 = \frac{Q(\hat{a},\hat{b})}{I-2} = \frac{1}{I-2} \sum_{i=1}^I (y_i-\hat{a}x_i-\hat{b})^2$$

Если допущение о нормальности верно, то выполняются следующие соотношения:

$$(I-2)\frac{s^2}{\sigma^2} \sim \chi_{I-2}^2$$ $$\hat{a} \sim N \big( a, \mathrm{V}(\hat{a}) \big)$$ $$\hat{b} \sim N \big( b, \mathrm{V}(\hat{b}) \big)$$

Кроме того, оценки параметров $a$ и $b$ независимы от оценки $\sigma^2$, что позволяет строить для оценок параметров доверительные интервалы с помощью статистики Стьюдента.

Для вычисления параметров регрессии в Excel используют две стандартные функции: SLOPE (НАКЛОН) и INTERCEPT (ОТРЕЗОК):

SLOPE (known_y=y, known_x=x)

Возвращает оценку параметра $a$.

INTERCEPT (known_y=y, known_x=x)

Возвращает оценку параметра $b$.

Fig21
Рис.21 Пример вычисления параметров линейной регрессии

Множественная регрессия

Естественным обобщением простой однофакторной регрессии является множественная регрессия –

$$\mathbf{y}=\mathbf{Xa}+\mathbf{ε}$$

в которой рассматривается связь между вектором откликов $\mathbf{y}$ и матрицей предикторов $\mathbf{X}. Обычное предположение относительно ошибок состоит в том, что:

$$E(ε_i)=0, \mathrm{cov}(\mathbf{ε}, \mathbf{ε})= \sigma^2\mathbf{I}$$

где $\mathbf{I}$ – единичная ($I×I$) матрица.

Если в задаче имеется $I$ наблюдений и $J$ переменных, то матрица $\mathbf{X}$ имеет размерность $I×J$. Цель регрессионного анализа – найти оценки неизвестных коэффициентов $\mathbf{a}=(a_1,\dots,a_J)^\mathrm{t}$, такие, которые минимизируют сумму квадратов остатков:

$$ Q(\mathbf{a}) = \lVert \mathbf{y} - \mathbf{Xa} \rVert^2 = \sum{i=1}^I \lvert y_i - \sum_{j=1}^J x_{ij}a_j \rvert^2 $$

В обычном методе наименьших квадратов (МНК) предполагается, что матрица $\mathbf{X}^\mathrm{t}\mathbf{X}$ обратима. Тогда минимум $Q(\mathbf{a})$ достигается при:

$$\hat{a}=(\mathbf{X}^\mathrm{t}\mathbf{X})^{–1}\mathbf{X}^\mathrm{t}\mathbf{y}$$

Оценка параметра $\sigma^2$ равна:

$$s^2=Q(\mathbf{\hat{a}})/(I–J)$$

Матрица ковариаций оценок равна

$$\mathbf{C}=s^2(\mathbf{X}^\mathrm{t}\mathbf{X})^{–1}$$

Для построения множественной регрессии в Excel используют две стандартные функции: TREND (ТЕНДЕНЦИЯ) и LINEST (ЛИНЕЙН). Регрессия строится в следующем виде:

$$y = b + m_1x_1 + \dots + m_Jx_j$$

TREND(known_y [,known_x] [,new_x] [,const])

known_y – вектор известных значений откликов $\mathbf{y}$ (калибровочный набор);

known_x – необязательный аргумент. Матрица известных значений предикторов $\mathbf{X} (калибровочный набор);

new_x – необязательный аргумент. Матрица новых значений предикторов $\mathbf{X}_{new}$ для которых вычисляются и выводятся значения откликов (проверочный набор);

const – необязательный аргумент. Логическое значение, которое указывает, требуется ли, чтобы параметр $b$ был равен нулю. Если const имеет значение TRUE или опущено, то $b$ вычисляется обычным образом, иначе $b=0$.

Примечания:

  • Вектор known_y должен занимать один столбец, тогда каждый столбец матрицы массива known_x интерпретируется как отдельная переменная;
  • Если аргумент known_x опущен, то предполагается, что это вектор чисел $\{1;2;3;\dots\}$ такого же размера, как и known_y;
  • Матрица новых значений new_x должна иметь столько же столбцов (переменных), как и матрица known_x;
  • Если аргумент new_x опущен, то предполагается, что он совпадает с массивом known_x. Результат является вектором, в котором число строк равно числу строк в массиве new_x.

Fig22
Рис.34 Пример использования функции TREND

Функция TREND является функцией массива и ее ввод должен завершаться нажатием комбинации CTRL+SHIFT+ENTER.

Функция LINEST (ЛИНЕЙН) дополняет функцию TREND и выводит некоторые статистические значения, связанные с регрессией:

LINEST(known_y [,known_x] [,new_x] [,const] [,stats])

Первые четыре аргументы аналогичны параметрам функции TREND. Необязательный логический аргумент stats указывает, нужно ли выводить дополнительные статистические значения. Если stats имеет значение FALSE или опущено, то выводятся только оценки коэффициентов $b,m_1,\dots,m_J$. Иначе выводится целая таблица как показано на рисунке 23.

Fig23
Рис. 23 Таблица вывода функция LINEST

mJ,..., m2, m1 и b – оценки регрессионных коэффициентов;

sJ,...,s2,s1 и sb – стандартные ошибки для оценок регрессионных коэффициентов;

R2 – коэффициент детерминации;

sy – стандартная ошибка оценки $y$;

F – $F$-статистика;

DoF – число степеней свободы;

SSreg – регрессионная сумма квадратов;

SSres – остаточная сумма квадратов.

Примечания

  • LINEST – это очень плохо сконструированная функция, очень неудобная в практическом применении;

  • Примечания, представленные в описании функции TREND полностью применимы к функции LINEST.

Fig24
Рис.36 Функция LINEST

Функция LINEST является функцией массива и ее ввод должен завершаться нажатием комбинации CTRL+SHIFT+ENTER.