Створіть симетричну позитивну певну матрицю із заздалегідь заданим малюнком обмеженості


9

Я намагаюся генерувати кореляційну матрицю (симетричний psd) із заздалегідь заданою структурою sparsity (заданою графіком на вузлах). Вузли, які з'єднані на графіку, мають кореляцію , решта всі - 0, а діагональ - 1.p×ppρU(0,1)

Я кілька разів намагався створити цю матрицю, але лише рідко отримую дійсну кореляційну матрицю.

Чи є спосіб, за допомогою якого я можу запевнити кореляційну матрицю whp? Зауважте, що я можу мати лише позитивну кореляцію, тому тощо не є варіантом.ρU(1,1)

Будь-яка допомога дуже вдячна!


Можливо, функція nearPD пакету Matrix в R може допомогти.
niandra82

Яка ваша міра розрідженості, яка закріплена за вами? Чи повинні ваші дані бути двійковими чи неотрицательними безперервними?
ttnphns

@ niandra82: nearPD не є корисним, оскільки він знищить рідкість матриці.
Лезовий бігун

1
Взагалі немає таких матричних розподілів, як описано в цьому запитанні. Розглянемо, наприклад, випадок з трьома коефіцієнтами . Якщо і , то тоді і тільки тоді, коли матриця є позитивно визначеною. Але тоді ви не можете мати і і . 3×3ρ,σ,ττ=0ρ>0,σ>0ρ2+σ2<1ρU(0,1)σU(0,1)
whuber

3
Тоді, чому б не сформувати спочатку матрицю кореляції. Потім створіть симетричний індекс для цієї матриці, де ви змусите індексовані елементи до 0. Sparcity буде визначений розміром індексу, і ви можете включити випадкову функцію через таку функцію, як зразок у r. Скільки б діагональних елементів ви не примушували до 0, matix все одно буде pd
Zachary Blumenfeld

Відповіді:


2

Закрийте, але жодної сигари для @Rodrigo de Azevedo.

Рішення полягає у використанні напіввизначеного програмування, щоб знайти максимальне значення, ρмах, і мінімальне значення (за умови, що воно не має негативного значення), ρмiн, оф ρтаким, що матриця кореляції із заданою схемою спарності є позитивною напівдефінітом (psd). Усі значенняρ такий як ρмахρρмах, створить матриці psd (вправа для читача)

Тому ви повинні або вибрати розподіл ρ який може приймати лише значення в [ρмах,ρмах]або ви повинні використовувати прийняття / відхилення та відхиляти будь-які створені значення ρ які не виробляють PSD-матрицю.

Приклад для матриці 4 на 4 з використанням YALMIP під MATLAB

sdpvar rho % declare rho to be a scalar variable
% find maximum value of rho (by minimizing -rho) subject to prescribed matrix being psd.
optimize([1 0 rho 0;0 1 rho 0;rho rho 1 rho;0 0 rho 1] >= 0,-rho) 
% find minimum value of rho subject to prescribed matrix being psd and rho being >= 0.
optimize([[1 0 rho 0;0 1 rho 0;rho rho 1 rho;0 0 rho 1] >= 0,rho >= 0],rho) 

Результати: максимум rho = 0,57735, мінімальний rho = 0. Легко очевидно, що нуль буде мінімальним значенням rho за умови, що rho не буде негативним, а призначена матриця psd, незалежно від розмірності та шаблону розрідженості. Тому зайвим є проведення напіввизначеної оптимізації, щоб знайти мінімальне негативне значенняρ.


4
Це цікаве тлумачення питання: воно передбачає, що всі ненульові коефіцієнти недіагональності рівні (тим самим надзвичайно спрощуючи проблему). Не ясно, чи це було задумане тлумачення, чи всі ненульові коефіцієнти поза діагоналі повинні бути незалежними реалізаціями від загального розподілу.
whuber

Таку інтерпретацію я зробив. Тепер, коли ви це згадуєте, я міг бачити іншу інтерпретацію. Принаймні моя інтерпретація має перевагу внаслідок досить чітко визначеної проблеми. Я припускаю, що можна сформулювати задачу, вирішення якої я не досліджував, щоб знайти максимальне значення ρ таке, що всі ненульові позадіагональні елементи одного трикутника кореляційної матриці можуть бути заповнені необов'язково рівними негативними значеннями ≤ це значення, і обов'язково зробити повністю заповнену матрицю psd.
Марк Л. Стоун

0

Кореляційна матриця симетрична, позитивна напівдефінітна і має 1на головній діагоналі. Можна знайтин×нкореляційна матриця шляхом розв’язання наступної напіввизначеної програми (SDP), де об'єктивна функція є довільною, скажімо, нульовою функцією

мінімізуватиОн,Хна темух11=х22==хнн=1ХОн

Якщо у вас є додаткові обмеження, такі як обмеження обмеженості

хij=0 для усіх (i,j)Z[н]×[н]

і негативні обмеження, ХОн, тоді вирішується наступний СДП

мінімізуватиОн,Хна темух11=х22==хнн=1хij=0 для усіх (i,j)Z[н]×[н]ХОнХОн

А 3×3 приклад

Припустимо, ми хочемо мати х13=0 і х12,х230. Ось сценарій MATLAB + CVX ,

cvx_begin sdp

    variable X(3,3) symmetric

    minimize( trace(zeros(3,3)*X) )
    subject to

        % put ones on the main diagonal
        X(1,1)==1
        X(2,2)==1
        X(3,3)==1

        % put a zero in the northeast and southwest corners
        X(1,3)==0

        % impose nonnegativity
        X(1,2)>=0
        X(2,3)>=0

        % impose positive semidefiniteness
        X >= 0

cvx_end

Запустивши сценарій,

Calling sedumi: 8 variables, 6 equality constraints
------------------------------------------------------------
SeDuMi 1.21 by AdvOL, 2005-2008 and Jos F. Sturm, 1998-2003.
Alg = 2: xz-corrector, Adaptive Step-Differentiation, theta = 0.250, beta = 0.500
eqs m = 6, order n = 6, dim = 12, blocks = 2
nnz(A) = 8 + 0, nnz(ADA) = 36, nnz(L) = 21
 it :     b*y       gap    delta  rate   t/tP*  t/tD*   feas cg cg  prec
  0 :            3.00E+000 0.000
  1 : -1.18E-001 6.45E-001 0.000 0.2150 0.9000 0.9000   1.86  1  1  1.2E+000
  2 : -6.89E-004 2.25E-002 0.000 0.0349 0.9900 0.9900   1.52  1  1  3.5E-001
  3 : -6.48E-009 9.72E-007 0.097 0.0000 1.0000 1.0000   1.01  1  1  3.8E-006
  4 : -3.05E-010 2.15E-009 0.000 0.0022 0.9990 0.9990   1.00  1  1  1.5E-007
  5 : -2.93E-016 5.06E-015 0.000 0.0000 1.0000 1.0000   1.00  1  1  3.2E-013

iter seconds digits       c*x               b*y
  5      0.3   5.8  0.0000000000e+000 -2.9302886987e-016
|Ax-b| =  1.7e-015, [Ay-c]_+ =  6.1E-016, |x|= 2.0e+000, |y|= 1.5e-015

Detailed timing (sec)
   Pre          IPM          Post
1.563E-001    2.500E-001    1.094E-001    
Max-norms: ||b||=1, ||c|| = 0,
Cholesky |add|=0, |skip| = 0, ||L.L|| = 1.
------------------------------------------------------------
Status: Solved
Optimal value (cvx_optval): +0

Подивимося, яке рішення знайдено CVX,

>> X

X =

    1.0000    0.4143         0
    0.4143    1.0000    0.4143
         0    0.4143    1.0000

Чи є ця матриця позитивною напівдекітністю? Позитивний певний?

>> rank(X)

ans =

     3

>> eigs(X)

ans =

    1.5860
    1.0000
    0.4140

Це позитивно, як і очікувалося. Ми можемо знайти позитивні матриці кореляції напіввизначених, вибравши ненульову (лінійну) цільову функцію.


Оскільки на цьому сайті "генерувати" буде означати "виведення з випадкового розподілу", чи могли б ви пояснити, як ваш код виробляє випадкові кореляційні матриці та вкажіть, якому розподілу вони слідують?
whuber

@whuber ОП просить неможливе. Ви прокоментували це 1 січня 2015 року. Якщо ви хочете генерувати випадкові матриці кореляції, тоді генеруйте випадкову квадратну матрицю та використовуйте її в цільовій функції в програмі напіввизначеного вище. Або генеруйте реалізацію випадкової величини, рівномірної по кубу
[-1,1](н2)
покладіть їх у позадіагональні записи (кореляційних) матриць із 1на головній діагоналі і відкиньте ті, що не є позитивними напівфінітами. Якщо є негативні обмеження, то рівномірно відбирайте куб
[0,1](н2)
Родріго де Азеведо

3
@whuber Ось 3D-еліптоп [png], який відображає набір3×3кореляційні матриці. Те, що хоче ОП, - перетинати еліптоп з негативним октантом, а потім перетинати його з площинами формихij=0. Якщо матриця є0, то він повинен бути у внутрішній частині еліптопа. Використовуючи СДП з ненульовими об'єктивними функціями, можна пробити поверхню еліптопа. Оскільки еліптоп опуклий, опуклі комбінації точок поверхні також відображатимуться у кореляційних матрицях.
Родріго де Азеведо

1
Це відмінний спосіб описати ситуацію.
whuber

3
Ви правильно розумієте, як зменшуються відносні обсяги. Саме тому це складна проблема.
whuber
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.