Вычислите ближайшую корреляционную матрицу путем минимизации расстояния Фробениуса
Найдите ближайшую корреляционную матрицу в норме Фробениуса для заданной непозитивной полуопределенной матрицы.
Задайте N
-by- 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'
аргумент пары "имя-значение". Для получения дополнительной информации об элементарных весах смотрите '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
-by- 1
векторизованные веса путем определения 'Weights'
аргумент пары "имя-значение". Для получения дополнительной информации о векторизованных весах смотрите '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 -by N симметричная аппроксимационная корреляционная матрица со всеми элементами в интервале [-1 1]
и единичную диагональ. The 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
-by- 1
вектор.
Симметричная матрица - Когда вы задаете Weights
как симметричная матрица W
со всеми элементами > = 0
для выполнения элементарного взвешивания, ближайшей корреляционной матрицы Y
вычисляется путем минимизации нормы (W ⚬ (A - Y)). Большие значения веса придают большую важность соответствующим элементам в A
.
N
-by- 1
вектор - Когда вы задаете Weights
как N
-by- 1
векторная w
с положительными числовыми значениями, ближайшая матрица корреляции Y
вычисляется путем минимизации нормы (diag
(<reservedrangesplaceholder0>)0.5 × (A - Y) × <reservedrangesplaceholder0>
(<reservedrangesplaceholder0>)0.5).
Примечание
Веса матриц ставят вес на отдельные записи корреляционной матрицы. Необходимо указать полную матрицу, но можно управлять, какие записи важнее соответствовать. Кроме того, веса векторов помещают вес на полный столбец (и соответствующую строку). Необходимо задать меньше весов по сравнению с весами матрицы, но целый столбец (и соответствующая строка) взвешивается одним весом.
Пример: 'Weights',W
Типы данных: single
| double
Y
- Ближайшая корреляционная матрица для ввода AБлижайшая матрица корреляции к входу A
, возвращается как положительная полуопределенная матрица.
[1] Хайам, Н. Дж. Вычисление ближайшей матрицы корреляции - задача из финансов. IMA Journal of Numerical Analysis. Том 22, Выпуск 3, 2002.
[2] Qi, H. and D. Sun. «An Augmented Lagrangian Dual Approach for the H-Weighted Near Correlation Matrix Problem». IMA Journal of Numerical Analysis. Том 31, Выпуск 2, 2011.
[3] Pang, J. S., D. Sun, and J. Sun. «Semismooth Homeomorphisms and Strong Stability of Semidefinite and Lorentz Complementarity Problems». Математика исследования операций. Том 28, № 1, 2003.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.