Матрица дисперсии-ковариации выражает линейные отношения между переменными. Знаете ли вы, что, учитывая ковариации между переменными, можно записать обратимое линейное преобразование, которое некоррелирует переменные? И наоборот, вы можете преобразовать набор некоррелированных переменных в переменные с заданными ковариациями. Трансформация, которая творит это волшебство, называется трансформацией Холецкого; он представлен матрицей, которая представляет собой квадратный корень ковариационной матрицы.

Матрица квадратного корня

Учитывая ковариационную матрицу Σ, ее можно однозначно разложить на произведение Σ=UTU, где U — верхняя треугольная матрица с положительными диагональными элементами, а верхний индекс обозначает транспонированную матрицу. Матрица U представляет собой матрицу Холецкого (или матрицу квадратного корня). Некоторые люди (включая меня) предпочитают работать с нижними треугольными матрицами. Если вы определяете L=UT, то Σ=LLT. Это форма разложения Холецкого, которая приводится у Голуба и Ван Лоана (1996, стр. 143). Голуб и Ван Лоан представили доказательство разложения Холецкого, а также различные способы его вычисления.

Геометрически матрица Холецкого преобразует некоррелированные переменные в переменные, дисперсии и ковариации которых задаются Σ. В частности, если вы генерируете p стандартные нормальные переменные, преобразование Холецкого отображает переменные в переменные для многомерного нормального распределения с ковариационной матрицей Σ и с центром в начале координат (обозначается MVN(0, Σ)).

Трансформация Холецкого: простой случай

Давайте посмотрим, как работает преобразование Холецкого в очень простой ситуации. Предположим, вы хотите сгенерировать многомерные нормальные данные, которые не коррелированы, но имеют неединичную дисперсию. Ковариационная матрица для этой ситуации представляет собой диагональную матрицу дисперсий: Σ = diag(σ21,…,σ2p). Квадратный корень из Σ представляет собой диагональную матрицу D, состоящую из стандартных отклонений: Σ = DTD, где D = diag(σ1,…,σp).

Геометрически матрица D масштабирует каждое направление координат независимо от других направлений. Это показано на следующем изображении. Ось X масштабируется с коэффициентом 3, тогда как ось Y не изменяется (коэффициент масштабирования равен 1). Преобразование D — это diag(3,1), что соответствует ковариационной матрице diag(9,1). Если представить круги на верхнем изображении как контуры вероятности для многомерного распределения MVN(0, I), то внизу показаны соответствующие эллипсы вероятности для распределения MVN(0, D).

Общее преобразование Холецкого коррелирует переменные

В общем случае ковариационная матрица содержит недиагональные элементы. Геометрия преобразования Холецкого аналогична показанному ранее случаю чистого масштабирования, но преобразование также вращает и сдвигает верхнее изображение.

Вычисление матрицы Холецкого для общей ковариационной матрицы не так просто, как для диагональной ковариационной матрицы. Однако вы можете использовать функцию ROOT в программном обеспечении SAS/IML для вычисления матрицы Холецкого. Для любой ковариационной матрицы функция ROOT возвращает такую ​​матрицу U, что произведение UTU равно ковариационной матрице, а U является верхней треугольной матрицей с положительными диагональными элементами. Следующие операторы вычисляют матрицу Холецкого в PROC IML:

proc iml;
Sigma = {9 1, 
         1 1};
U = root(Sigma);
print U (U`*U)[label="Sigma=U`*U"];

Вы можете использовать матрицу Холецкого для создания корреляций между случайными величинами. Например, предположим, что X и Y являются независимыми стандартными нормальными переменными. Матрица U (или ее транспонирование, L=UT) может использоваться для создания новых переменных Z и W, таких что ковариация Z и W равна Σ. Следующие операторы SAS/IML генерируют X и Y как строки матрицы xy. То есть каждый столбец представляет собой точку (x, y). (Обычно переменные формируют столбцы, но транспонирование xy упрощает линейную алгебру.) Затем операторы сопоставляют каждую точку (x, y) с новой точкой (z, w) и вычисляют выборочную ковариацию Z и W. переменные. Как и было обещано, выборочная ковариация близка к Σ, ковариации основной совокупности.

/* generate x,y ~ N(0,1), corr(x,y)=0 */
xy = j(2, 1000);
call randseed(12345);
call randgen(xy, "Normal"); /* each col is indep N(0,1) */
 
L = U`; 
zw = L * xy; /* apply Cholesky transformation to induce correlation */
cov = cov(zw`); /* check covariance of transformed variables */
print cov;

Следующий график показывает геометрию преобразования с точки зрения данных и с точки зрения эллипсов вероятности. Верхний график представляет собой точечную диаграмму переменных X и Y. Обратите внимание, что они не коррелированы, а эллипсы вероятности представляют собой круги. Нижний график представляет собой точечную диаграмму переменных Z и W. Обратите внимание, что они коррелированы, а контуры вероятности представляют собой эллипсы, наклоненные относительно осей координат. Нижний график представляет собой преобразование под L точек и окружностей на верхнем графике.

Обратное преобразование Холецкого не коррелирует переменные

Вы можете задаться вопросом: можно ли пойти другим путем? То есть, если вы начинаете с коррелированных переменных, можете ли вы применить линейное преобразование, чтобы преобразованные переменные были некоррелированными? Да, и несложно догадаться, какое преобразование работает: это обратное преобразованию Холецкого!

Предположим, вы генерируете многомерные нормальные данные из MVN(0,Σ). Вы можете «не коррелировать» данные, преобразовав данные в соответствии с L-1. В программном обеспечении SAS/IML у вас может возникнуть соблазн использовать функцию INV для вычисления явной обратной матрицы, но, как я уже писал, альтернативой является использование функции SOLVE, которая более эффективна, чем вычисление явной обратной матрицы. Однако, поскольку L — нижняя треугольная матрица, существует еще более эффективный способ решения линейной системы: используйте функцию TRISOLV, как показано в следующих утверждениях:

/* Start with correlated data. Apply inverse of L. */
zw = T( RandNormal(1000, {0, 0}, Sigma) );
xy = trisolv(4, L, zw); /* more efficient than inv(L)*zw or solve(L, zw) */
 
/* did we succeed? Compute covariance of transformed data */
cov = cov(xy`);
print cov;

Успех! Ковариационная матрица по сути является единичной матрицей. Обратное преобразование Холецкого «декоррелирует» переменные.

Функция TRISOLV, использующая обратную подстановку для решения линейной системы, работает очень быстро. Всякий раз, когда вы пытаетесь решить линейную систему, включающую ковариационную матрицу, вы должны попытаться решить систему, вычислив фактор Холецкого ковариационной матрицы с последующей обратной подстановкой.

Таким образом, вы можете использовать фактор Холецкого ковариационной матрицы несколькими способами:

  • Генерировать многомерные нормальные данные с заданной ковариационной структурой из некоррелированных нормальных переменных.
  • Чтобы удалить корреляции между переменными. Эта задача требует использования обратного преобразования Холецкого.
  • Для быстрого решения линейных систем, включающих ковариационную матрицу.

Полезные ссылки:

Калькулятор разложения Холецкого

Калькулятор разложения LU (с полным поворотом)

Калькулятор QR-разложения (метод Хаусхолдера)

Калькулятор разложения по единственному значению (SVD)

Калькулятор разложения крупы