Вычислите самую близкую корреляционную матрицу путем минимизации расстояния Frobenius
Найдите самую близкую корреляционную матрицу в норме Фробениуса для данной неположительной полуопределенной матрицы.
Задайте 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
Copyright 2019 The MathWorks, Inc.
A
— Введите корреляционную матрицуВведите корреляционную матрицу в виде N-by-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)
возвращает самую близкую корреляционную матрицу путем минимизации расстояния Frobenius.'Tolerance'
— Допуск завершения к алгоритму1e-6
(значение по умолчанию) | положительная скалярная величинаДопуск завершения к алгоритму в виде разделенной запятой пары, состоящей из 'Tolerance'
и положительная скалярная величина.
Пример: 'Tolerance',1e-7
Типы данных: single
| double
'MaxIterations'
— Максимальное количество итераций решателя
(значение по умолчанию) | положительное целое числоМаксимальное количество итераций решателя в виде разделенной запятой пары, состоящей из '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
вектор — Когда вы задаете Weights
как N
- 1
векторный w
с положительными числовыми значениями, самая близкая корреляционная матрица Y
вычисляется путем минимизации нормы (diag
(w) 0,5 × (A-Y) × diag
(w) 0.5).
Примечание
Матричные веса поправляются на отдельных записях корреляционной матрицы. Полная матрица должна быть задана, но можно управлять, какие записи более важны для соответствия. В качестве альтернативы векторные веса поправляются на полном столбце (и соответствующая строка). Меньше весов должно быть задано по сравнению с матричными весами, но целый столбец (и соответствующая строка) взвешивается одним весом.
Пример: 'Weights',W
Типы данных: single
| double
Y
— Самая близкая корреляционная матрица к входу AСамая близкая корреляционная матрица к входу A
, возвращенный как положительная полуопределенная матрица.
[1] Higham, N. J. "Вычисляя самую близкую корреляционную матрицу — проблема от финансов". Журнал IMA числового анализа. Издание 22, выпуск 3, 2002.
[2] Ци, H. и D. Sun. "Увеличенный лагранжевый двойной подход для самой близкой проблемы корреляционной матрицы H-Weighted". Журнал IMA числового анализа. Издание 31, выпуск 2, 2011.
[3] Причините острую боль, J. S. D. Sun и J. Sun. "Полусглаженные гомеоморфизмы и сильная устойчивость полуопределенных и проблем взаимозависимости Лоренца". Математика исследования операции. Издание 28, номер 1, 2003.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.