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

Я завернул это в класс расширений, который позволяет вам называть:

myDataTable.WriteToCsvFile("C:\\MyDataTable.csv");

на любом DataTable.

public static class DataTableExtensions 
{
    public static void WriteToCsvFile(this DataTable dataTable, string filePath) 
    {
        StringBuilder fileContent = new StringBuilder();

        foreach (var col in dataTable.Columns) 
        {
            fileContent.Append(col.ToString() + ",");
        }

        fileContent.Replace(",", System.Environment.NewLine, fileContent.Length - 1, 1);

        foreach (DataRow dr in dataTable.Rows) 
        {
            foreach (var column in dr.ItemArray) 
            {
                fileContent.Append("\"" + column.ToString() + "\",");
            }

            fileContent.Replace(",", System.Environment.NewLine, fileContent.Length - 1, 1);
        }

        System.IO.File.WriteAllText(filePath, fileContent.ToString());
    }
}
0
задан Harry_Cai 16 January 2019 в 16:53
поделиться

1 ответ

Пусть S - положительно определенная матрица. Следовательно, S имеет разложение Холецкого L.L '= S, где L - нижнетреугольная матрица, а ' обозначает транспонирование матрицы, а . обозначает умножение матрицы. Пусть x взят из гауссовского распределения со средним нулем и ковариацией, равной единице матрицы Тогда y = L.x имеет гауссово распределение со средним нулем и ковариацией S.

Итак, если вы можете найти подходящие ковариационные матрицы A и B, вы можете использовать их разложения Холецкого для генерации выборок. Теперь о построении матрицы, которая имеет собственные значения, следующие заданному распределению. Мой совет - начать со списка образцов из экспоненциального распределения; это будут ваши собственные значения. Пусть E = матрица с показательными выборками по диагонали и нулями в противном случае. Пусть U - любая унитарная матрица (т.е. столбцы ортогональны, а норма каждого столбца равна 1). Тогда U.E.U 'является положительно определенной матрицей с указанными собственными значениями.

U может быть любой унитарной матрицей. В частности, U может быть единичной матрицей. Это может сделать все остальное проще; вам нужно проверить, подходит ли U = identity для проблемы, над которой вы работаете.

0
ответ дан Robert Dodier 16 January 2019 в 16:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: