Участник:Lonalone/Генерация гауссовского вектора методом линейных преобразований: различия между версиями
Lonalone (обсуждение | вклад) |
Lonalone (обсуждение | вклад) |
||
Строка 13: | Строка 13: | ||
Даны ковариационная матрица <math>\Sigma</math> и вектор математических ожиданий <math>M</math>: | Даны ковариационная матрица <math>\Sigma</math> и вектор математических ожиданий <math>M</math>: | ||
:<math> | :<math> | ||
− | \Sigma = \| | + | \Sigma = \|\sigma_{ij}\| = \| \mathbb{E}[(X_{i} - m_{x_{i}})(X_{j} - m_{x_{j}})]\|, \\ |
M = (m_{x_{1}}, m_{x_{2}}, ..., m_{x_{n}})^T. | M = (m_{x_{1}}, m_{x_{2}}, ..., m_{x_{n}})^T. | ||
</math> | </math> | ||
Строка 19: | Строка 19: | ||
Требуется найти такую матрицу <math>B</math>, которая позволяла бы получить искомый вектор <math>X</math> с требуемыми характеристиками в результате линейного преобразования <math>X = BY + M</math>, где <math>Y</math> — n-мерный случайный вектор с независимыми нормально распределенными компонентами со стандартными параметрами. | Требуется найти такую матрицу <math>B</math>, которая позволяла бы получить искомый вектор <math>X</math> с требуемыми характеристиками в результате линейного преобразования <math>X = BY + M</math>, где <math>Y</math> — n-мерный случайный вектор с независимыми нормально распределенными компонентами со стандартными параметрами. | ||
− | Будем искать матрицу <math> | + | Будем искать матрицу <math>B</math> в виде нижней треугольной матрицы. Перейдем от матричной записи к системе алгебраических уравнений: |
:<math> | :<math> | ||
Строка 26: | Строка 26: | ||
X_{2} \\ \vdots \\ X_{n} \end{pmatrix} = | X_{2} \\ \vdots \\ X_{n} \end{pmatrix} = | ||
− | \begin{pmatrix} | + | \begin{pmatrix} b_{11} & 0 & \cdots & 0 |
− | \\ | + | \\b_{21} & b_{22} & \cdots & 0 |
\\ \vdots & \vdots & \ddots & \vdots | \\ \vdots & \vdots & \ddots & \vdots | ||
− | \\ | + | \\ b_{n1} & b_{n2} & \cdots & b_{nn} |
\end{pmatrix} \times | \end{pmatrix} \times | ||
Строка 41: | Строка 41: | ||
:<math> | :<math> | ||
− | \begin{cases}X_{1} - m_{x_{1}} = | + | \begin{cases}X_{1} - m_{x_{1}} = b_{11}Y_{1} |
− | \\X_{2} - m_{x_{2}} = | + | \\X_{2} - m_{x_{2}} = b_{21}Y_{1} + b_{22}Y_{2} |
\\ \cdots \cdots \cdots \cdots \cdots \cdots \cdots \cdots \cdots \cdots | \\ \cdots \cdots \cdots \cdots \cdots \cdots \cdots \cdots \cdots \cdots | ||
− | \\X_{n} - m_{x_{n}} = | + | \\X_{n} - m_{x_{n}} = b_{n1}Y_{1} + b_{n2}Y_{2} + \cdots + b_{nn}Y_{n} |
\end{cases} | \end{cases} | ||
Строка 62: | Строка 62: | ||
</math> | </math> | ||
− | Почленно перемножив сами на себя и между собой соответственно левые и правые части уравнений системы и взяв от результатов перемножения математическое ожидание, | + | Почленно перемножив сами на себя и между собой соответственно левые и правые части уравнений системы и взяв от результатов перемножения математическое ожидание, получаем систему уравнений вида: |
:<math> | :<math> | ||
\begin{cases} | \begin{cases} | ||
− | \mathbb{E}[(X_{1} - m_{x_{1}})(X_{1} - m_{x_{1}})] = \mathbb{E}[ | + | \mathbb{E}[(X_{1} - m_{x_{1}})(X_{1} - m_{x_{1}})] = \mathbb{E}[b_{11}Y_{1}b_{11}Y_{1}], |
− | \\ \mathbb{E}[(X_{1} - m_{x_{1}})(X_{2} - m_{x_{2}})] = \mathbb{E}[( | + | \\ \mathbb{E}[(X_{1} - m_{x_{1}})(X_{2} - m_{x_{2}})] = \mathbb{E}[(b_{21}Y_{1} + b_{22}Y_{2})b_{11}Y_{1}], |
\\ \cdots \cdots \cdots \cdots \cdots \cdots \cdots \cdots \cdots \cdots | \\ \cdots \cdots \cdots \cdots \cdots \cdots \cdots \cdots \cdots \cdots | ||
\end{cases} | \end{cases} | ||
Строка 74: | Строка 74: | ||
</math> | </math> | ||
− | Таким образом, в левых частях полученной системы уравнений располагаются элементы заданной | + | Таким образом, в левых частях полученной системы уравнений располагаются элементы заданной ковариационной матрицы <math>\Sigma</math>, а в правых — элементы искомой матрицы <math>B</math>. Последовательно решая эту систему, получаем формулы для расчета элементов <math>\sigma_{ij}</math>: |
:<math> | :<math> | ||
− | + | b_{11}=\sqrt{\sigma_{11}}; b_{21}=\frac{\sigma_{12}}{\sqrt{\sigma_{11}}}; b_{22} = \sqrt{\sigma_{22} - \frac{\sigma_{12}}{\sigma_{11}}}, \cdots | |
</math> | </math> | ||
− | + | Рекуррентная формула для расчета любого элемента матрицы преобразования <math>B</math> имеет вид: | |
:<math> | :<math> | ||
− | + | b_{ij} = \frac {\sigma_{ij} - \sum_{k=1}^{j-1} b_{ik} b_{jk}} {\sqrt{\sigma_{ij} - \sum_{k=1}^{j-1} b_{jk}^2}}, \quad 1 \leqslant j \leqslant i \leqslant n | |
</math> | </math> |
Версия 20:35, 25 октября 2018
Автор описания: Меньших И. М.
Содержание
- 1 Свойства и структура алгоритма
- 1.1 Общее описание алгоритма
- 1.2 Математическое описание алгоритма
- 1.3 Вычислительное ядро алгоритма
- 1.4 Макроструктура алгоритма
- 1.5 Схема реализации последовательного алгоритма
- 1.6 Последовательная сложность алгоритма
- 1.7 Информационный граф
- 1.8 Ресурс параллелизма алгоритма
- 1.9 Входные и выходные данные алгоритма
- 1.10 Свойства алгоритма
- 2 Программная реализация алгоритма
- 2.1 Особенности реализации последовательного алгоритма
- 2.2 Локальность данных и вычислений
- 2.3 Возможные способы и особенности параллельной реализации алгоритма
- 2.4 Масштабируемость алгоритма и его реализации
- 2.5 Динамические характеристики и эффективность реализации алгоритма
- 2.6 Выводы для классов архитектур
- 2.7 Существующие реализации алгоритма
- 3 Литература
1 Свойства и структура алгоритма
1.1 Общее описание алгоритма
В статье приведен алгоритм генерации n-мерного гауссовского случайного вектора с помощью метода линейных преобразований[1]. Этот метод является одним из наиболее распространенных так называемых корреляционных методов, применяемых в случаях, когда при моделировании непрерывного n-мерного случайного вектора достаточно обеспечить лишь требуемые значения элементов корреляционной матрицы и вектора математических ожиданий компонент(для случая нормального распределения выполнение названного требования означает выполнение достаточного условия полного статистического соответствия теоретического и моделируемого распределений[2]).
Идея алгоритма заключается в линейном преобразовании n-мерного случайного вектора [math]Y[/math], компоненты которого независимы и одинаково распределены по нормальному закону со стандартными параметрами, в случайный вектор [math]X[/math] с требуемыми корреляционной матрицей и вектором математических ожиданий.
1.2 Математическое описание алгоритма
1.2.1 Метод линейных преобразований
Даны ковариационная матрица [math]\Sigma[/math] и вектор математических ожиданий [math]M[/math]:
- [math] \Sigma = \|\sigma_{ij}\| = \| \mathbb{E}[(X_{i} - m_{x_{i}})(X_{j} - m_{x_{j}})]\|, \\ M = (m_{x_{1}}, m_{x_{2}}, ..., m_{x_{n}})^T. [/math]
Требуется найти такую матрицу [math]B[/math], которая позволяла бы получить искомый вектор [math]X[/math] с требуемыми характеристиками в результате линейного преобразования [math]X = BY + M[/math], где [math]Y[/math] — n-мерный случайный вектор с независимыми нормально распределенными компонентами со стандартными параметрами.
Будем искать матрицу [math]B[/math] в виде нижней треугольной матрицы. Перейдем от матричной записи к системе алгебраических уравнений:
- [math] \begin{pmatrix} X_{1} \\ X_{2} \\ \vdots \\ X_{n} \end{pmatrix} = \begin{pmatrix} b_{11} & 0 & \cdots & 0 \\b_{21} & b_{22} & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ b_{n1} & b_{n2} & \cdots & b_{nn} \end{pmatrix} \times \begin{pmatrix} Y_{1} \\ Y_{2} \\ \vdots \\ Y_{n} \end{pmatrix} + \begin{pmatrix} m_{x_{1}} \\ m_{x_{2}} \\ \vdots \\ m_{x_{n}} \end{pmatrix} \Rightarrow [/math]
- [math] \begin{cases}X_{1} - m_{x_{1}} = b_{11}Y_{1} \\X_{2} - m_{x_{2}} = b_{21}Y_{1} + b_{22}Y_{2} \\ \cdots \cdots \cdots \cdots \cdots \cdots \cdots \cdots \cdots \cdots \\X_{n} - m_{x_{n}} = b_{n1}Y_{1} + b_{n2}Y_{2} + \cdots + b_{nn}Y_{n} \end{cases} [/math]
Поскольку компоненты вектора [math]Y[/math] независимы и имеют стандартные параметры, справедливо выражение:
- [math] \mathbb{E}[Y_{i}Y_{j}] = \left\{\begin{matrix} 1, &i = j, \\ 0, &i \not= j. \end{matrix}\right. [/math]
Почленно перемножив сами на себя и между собой соответственно левые и правые части уравнений системы и взяв от результатов перемножения математическое ожидание, получаем систему уравнений вида:
- [math] \begin{cases} \mathbb{E}[(X_{1} - m_{x_{1}})(X_{1} - m_{x_{1}})] = \mathbb{E}[b_{11}Y_{1}b_{11}Y_{1}], \\ \mathbb{E}[(X_{1} - m_{x_{1}})(X_{2} - m_{x_{2}})] = \mathbb{E}[(b_{21}Y_{1} + b_{22}Y_{2})b_{11}Y_{1}], \\ \cdots \cdots \cdots \cdots \cdots \cdots \cdots \cdots \cdots \cdots \end{cases} [/math]
Таким образом, в левых частях полученной системы уравнений располагаются элементы заданной ковариационной матрицы [math]\Sigma[/math], а в правых — элементы искомой матрицы [math]B[/math]. Последовательно решая эту систему, получаем формулы для расчета элементов [math]\sigma_{ij}[/math]:
- [math] b_{11}=\sqrt{\sigma_{11}}; b_{21}=\frac{\sigma_{12}}{\sqrt{\sigma_{11}}}; b_{22} = \sqrt{\sigma_{22} - \frac{\sigma_{12}}{\sigma_{11}}}, \cdots [/math]
Рекуррентная формула для расчета любого элемента матрицы преобразования [math]B[/math] имеет вид:
- [math] b_{ij} = \frac {\sigma_{ij} - \sum_{k=1}^{j-1} b_{ik} b_{jk}} {\sqrt{\sigma_{ij} - \sum_{k=1}^{j-1} b_{jk}^2}}, \quad 1 \leqslant j \leqslant i \leqslant n [/math]
(суммы с верхним нулевым пределом считаются равными нулю)
1.2.2 Генерация случайного вектора Y
Пусть имеется генератор псевдослучайных чисел (ГПСЧ), с помощью которого можно получить реализацию случайной величины [math]u \sim U(0,1) [/math]. Описанный выше случайный вектор [math]Y=(y_1, \cdots, y_n)[/math] с независимыми компонентами составим из [math]n[/math] реализаций случайной величины [math]\eta \sim N(0,1)[/math]. Каждую такую реализацию [math]y_i[/math], в свою очередь, получим с помощью приближения по ЦПТ [math]k[/math] случайными величинами, распределенными равномерно на отрезке [0,1]:
- [math] y_i = \frac {1} {\sqrt{\frac{k}{12}} } (\sum_{j=1}^k{u_j^i} - \frac{k}{2}), \forall i = 1, \cdots, n \\ [/math]
где [math]u_j^i - [/math] реализации случайной величины [math]u[/math], а [math]k - [/math] параметр, обеспечивающий качество приближения.
Как правило, [math]k[/math] берут равным 12 и считают, что для подавляющего числа практических задач обеспечивается должная точность вычислений[3].
1.3 Вычислительное ядро алгоритма
1.4 Макроструктура алгоритма
1.5 Схема реализации последовательного алгоритма
1.6 Последовательная сложность алгоритма
1.7 Информационный граф
1.8 Ресурс параллелизма алгоритма
1.9 Входные и выходные данные алгоритма
1.10 Свойства алгоритма
2 Программная реализация алгоритма
2.1 Особенности реализации последовательного алгоритма
2.2 Локальность данных и вычислений
2.3 Возможные способы и особенности параллельной реализации алгоритма
2.4 Масштабируемость алгоритма и его реализации
2.5 Динамические характеристики и эффективность реализации алгоритма
2.6 Выводы для классов архитектур
2.7 Существующие реализации алгоритма
3 Литература
- ↑ (п. 1.10.4) Михайлов Г.А., Войтишек А.В. Численное статистическое моделирование. Методы Монте-Карло — М.: Академия, 2006. — 368 с.
- ↑ https://ru.wikipedia.org/wiki/Многомерное_нормальное_распределение
- ↑ Балдин К.В., Уткин В.Б. Информационные системы в экономике. — М.:Дашков и Кo, 2008. — 395 с.