Вычислить ближайшую корреляционную матрицу путем минимизации расстояния Фробениуса
Найдите ближайшую корреляционную матрицу в норме Фробениуса для данной непозитивной полуопределённой матрицы.
Укажите Nоколо-N симметричная матрица со всеми элементами в интервале [-1, 1] и диагональ блока.
A = [1.0000 0 0 0 -0.9360
0 1.0000 -0.5500 -0.3645 -0.5300
0 -0.5500 1.0000 -0.0351 0.0875
0 -0.3645 -0.0351 1.0000 0.4557
-0.9360 -0.5300 0.0875 0.4557 1.0000]; Вычислить собственные значения A использование eig.
eig(A)
ans = 5×1
-0.1244
0.3396
1.0284
1.4457
2.3107
Наименьшее собственное значение меньше 0, что указывает на то, что A не является положительной полуопределённой матрицей.
Вычислить ближайшую корреляционную матрицу с помощью nearcorr с алгоритмом Ньютона по умолчанию.
B = nearcorr(A)
B = 5×5
1.0000 0.0372 0.0100 -0.0219 -0.8478
0.0372 1.0000 -0.5449 -0.3757 -0.4849
0.0100 -0.5449 1.0000 -0.0381 0.0996
-0.0219 -0.3757 -0.0381 1.0000 0.4292
-0.8478 -0.4849 0.0996 0.4292 1.0000
Вычислить собственные значения B.
eig(B)
ans = 5×1
0.0000
0.3266
1.0146
1.4113
2.2475
Все собственные значения больше или равны 0, что означает, что B - положительная полуопределённая матрица.
При использовании nearcorr, можно задать алгоритм чередующихся проекций, задав аргумент пара имя-значение 'method' кому 'projection'.
nearcorr(A,'method','projection')
ans = 5×5
1.0000 0.0372 0.0100 -0.0219 -0.8478
0.0372 1.0000 -0.5449 -0.3757 -0.4849
0.0100 -0.5449 1.0000 -0.0381 0.0996
-0.0219 -0.3757 -0.0381 1.0000 0.4292
-0.8478 -0.4849 0.0996 0.4292 1.0000
Можно также наложить элементные веса, указав 'Weights' аргумент пары имя-значение. Дополнительные сведения об элементарных весах см. в разделе Весы.
W = [0.0000 1.0000 0.1000 0.1500 0.2500
1.0000 0.0000 0.0500 0.0250 0.1500
0.1000 0.0500 0.0000 0.2500 1
0.1500 0.0250 0.2500 0.0000 0.2500
0.2500 0.1500 1 0.2500 0.0000];
nearcorr(A,'Weights',W) ans = 5×5
1.0000 0.0014 0.0287 -0.0222 -0.8777
0.0014 1.0000 -0.4980 -0.7268 -0.4567
0.0287 -0.4980 1.0000 -0.0358 0.0878
-0.0222 -0.7268 -0.0358 1.0000 0.4465
-0.8777 -0.4567 0.0878 0.4465 1.0000
Кроме того, можно навязать Nоколо-1 векторизованные веса путем указания 'Weights' аргумент пары имя-значение. Дополнительные сведения о векторизированных весах см. в разделе Весы.
W = linspace(0.1,0.01,5)'
W = 5×1
0.1000
0.0775
0.0550
0.0325
0.0100
C = nearcorr(A,'Weights', W) C = 5×5
1.0000 0.0051 0.0021 -0.0056 -0.8490
0.0051 1.0000 -0.5486 -0.3684 -0.4691
0.0021 -0.5486 1.0000 -0.0367 0.1119
-0.0056 -0.3684 -0.0367 1.0000 0.3890
-0.8490 -0.4691 0.1119 0.3890 1.0000
Вычислить собственные значения C.
eig(C)
ans = 5×1
0.0000
0.3350
1.0272
1.4308
2.2070
Все собственные значения больше или равны 0, что означает, что C - положительная полуопределённая матрица.
Использовать nearcorr для создания положительной полуопределённой матрицы для корреляционной матрицы для запасов с отсутствующими значениями.
Предположим, что имеются запасы с отсутствующими значениями.
Stock_Missing = [59.875 42.734 47.938 60.359 NaN 69.625 61.500 62.125
53.188 49.000 39.500 64.813 34.750 56.625 83.000 44.500
55.750 50.000 38.938 62.875 30.188 43.375 NaN 29.938
65.500 51.063 45.563 69.313 48.250 62.375 85.250 46.875
69.938 47.000 52.313 71.016 37.500 59.359 61.188 48.219
61.500 44.188 NaN 57.000 35.313 55.813 51.500 62.188
59.230 48.210 62.190 61.390 54.310 70.170 61.750 91.080
NaN 48.700 60.300 68.580 61.250 70.340 61.590 90.350
52.900 52.690 54.230 61.670 68.170 NaN 57.870 88.640
57.370 59.040 59.870 62.090 61.620 66.470 65.370 85.840];
Использовать corr чтобы вычислить корреляционную матрицу и затем использовать eig чтобы проверить, является ли корреляционная матрица положительной полуопределенной.
A = corr(Stock_Missing, 'Rows','pairwise'); eig(A)
ans = 8×1
-0.1300
-0.0398
0.0473
0.2325
0.6278
1.6276
1.7409
3.8936
A имеет собственные значения, которые меньше 0, что указывает на то, что корреляционная матрица не является положительной полуопределенной.
Использовать nearcorr с этой матрицей корреляции для генерации положительной полуопределенной матрицы, где все собственные значения больше или равны 0.
B = nearcorr(A); eigenvalues = eig(B)
eigenvalues = 8×1
0.0000
0.0000
0.0180
0.2205
0.5863
1.6026
1.7258
3.8469
Авторское право 2019 The MathWorks, Inc.
A - Матрица входной корреляцииВходная корреляционная матрица, заданная как N-на-N симметричная аппроксимационная корреляционная матрица со всеми элементами в интервале [-1 1] и диагональ блока. A ввод может быть или не быть положительной полуопределенной матрицей.
Пример: A = [1.0000 0 0 0 -0.9360 0 1.0000 -0.5500 -0.3645 -0.5300 0 -0.5500 1.0000 -0.0351 0.0875 0 -0.3645 -0.0351 1.0000 0.4557 -0.9360 -0.5300 0.0875 0.4557 1.0000]
Типы данных: single | double
Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.
nearcorr(A,'Tolerance',1e-7,'MaxIterations',500,'Method','newton','Weights',weight_vector) возвращает ближайшую корреляционную матрицу путем минимизации расстояния Фробениуса.'Tolerance' - Допуск окончания для алгоритма1e-6 (по умолчанию) | положительный скалярДопуск окончания для алгоритма, указанный как разделенная запятыми пара, состоящая из 'Tolerance' и положительный скаляр.
Пример: 'Tolerance',1e-7
Типы данных: single | double
'MaxIterations' - Максимальное число итераций решателя200 (по умолчанию) | положительное целое числоМаксимальное количество итераций решателя, указанное как пара, разделенная запятыми, состоящая из 'MaxIterations' и положительное целое число.
Пример: 'MaxIterations',500
Типы данных: single | double
'Method' - Метод решения ближайшей задачи корреляционной матрицы'newton' (по умолчанию) | 'projection'Метод решения ближайшей задачи корреляционной матрицы, определяемый как разделенная запятыми пара, состоящая из 'Method' и одно из значений в следующей таблице.
| Стоимость | Описание |
|---|---|
'newton' | Алгоритм Ньютона квадратично сходится. При указании |
'projection' | Алгоритм чередующихся проекций может сходиться к ближайшей корреляционной матрице с высокой точностью, в лучшем случае линейно. При указании |
Пример: 'Method','projection'
Типы данных: char | string
'Weights' - Веса для доверительных уровней записей в входной матрице[ ] (по умолчанию) | matrix | vectorВеса для доверительных уровней записей во входной матрице, указанной как пара, разделенная запятыми, состоящая из 'Weights' и либо симметричную матрицу, либо Nоколо-1 вектор.
Симметричная матрица - при указании Weights как симметричная матрица W со всеми элементами > =0 для выполнения элементного взвешивания - ближайшая корреляционная матрица Y вычисляется путем минимизации нормы (W ⚬ (A-Y)). Большие значения веса придают большее значение соответствующим элементам в A.
Nоколо-1 vector - при указании Weights как Nоколо-1 вектор w с положительными числовыми значениями, ближайшая корреляционная матрица Y вычисляется минимизацией нормы (diag(w) 0,5 × (A-Y) ×diag(w) 0,5).
Примечание
Веса матрицы накладывают вес на отдельные записи корреляционной матрицы. Необходимо указать полную матрицу, но можно управлять тем, какие записи более важны для сопоставления. В качестве альтернативы векторные веса наносят вес на полный столбец (и соответствующую строку). Необходимо указать меньшее количество весов по сравнению с весами матрицы, но весь столбец (и соответствующая строка) взвешивается на один вес.
Пример: 'Weights',W
Типы данных: single | double
Y - Ближайшая корреляционная матрица к входу АБлижайшая корреляционная матрица к входу A, возвращенный как положительная полуопределённая матрица.
[1] Хайам, Н. Дж. «Вычисление ближайшей корреляционной матрицы - проблема из финансов». Журнал численного анализа IMA. Том 22, выпуск 3, 2002.
[2] Ци, Х. и Д. Сун. «Дополненный лагранжиановый двойной подход для Н-взвешенной ближайшей проблемы корреляционной матрицы». Журнал численного анализа IMA. Том 31, выпуск 2, 2011.
[3] Панг, Дж. С., Д. Сун и Дж. Сун. «Семизматические гомеоморфизмы и сильная стабильность проблем семидефинита и лоренцевой комплементарности». Математика исследования операции. Том 28, № 1, 2003.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.