Tạo ma trận xác định dương đối xứng với mẫu độ thưa được chỉ định trước


9

Tôi đang cố gắng tạo ma trận tương quan (psd đối xứng) với cấu trúc thưa thớt được chỉ định trước (được chỉ định bởi biểu đồ trên các nút ). Các nút được kết nối trong biểu đồ có tương quan , phần còn lại là 0 và đường chéo là tất cả 1.p ρ ~ U ( 0 , 1 )p×ppρU(0,1)

Tôi đã thử tạo ma trận này nhiều lần nhưng chỉ hiếm khi có được ma trận tương quan hợp lệ.

Có cách nào để tôi có thể đảm bảo ma trận tương quan whp không? Lưu ý rằng tôi chỉ có thể có tương quan dương nên v.v. không phải là một tùy chọn.ρU(1,1)

Bất kỳ trợ giúp nào cũng được đánh giá rất cao!


Có lẽ hàm gầnPD của gói Matrix trong R có thể giúp ích.
niandra82

Biện pháp thưa thớt của bạn là cố định cho bạn là gì? Dữ liệu của bạn nên là nhị phân hoặc không âm liên tục?
ttnphns

@ niandra82: nearPD là không tốt vì nó sẽ phá hủy sự thưa thớt của ma trận.
Blade Runner

1
Nói chung, không có phân phối ma trận như mô tả trong câu hỏi này. Ví dụ, hãy xem xét trường hợp với ba hệ số . Nếu và , thì khi và chỉ khi ma trận xác định dương. Nhưng sau đó, bạn không thể có cả và . 3×3ρ,σ,ττ=0ρ>0,σ>0ρ2+σ2<1ρU(0,1)σU(0,1)
whuber

3
Vậy thì tại sao không tạo ra ma trận tương quan trước. Sau đó, tạo một chỉ số đối xứng cho ma trận đó trong đó bạn buộc các phần tử được lập chỉ mục thành 0. Sparcity sẽ được chỉ định bởi kích thước của chỉ mục và bạn có thể kết hợp randommess thông qua một hàm như mẫu trong r. Cho dù bạn có ép buộc bao nhiêu phần tử đường chéo về 0, thì matix vẫn sẽ là pd
Zachary Blumenfeld

Câu trả lời:


2

Đóng nhưng không có xì gà cho @Rodrigo de Azevedo.

Giải pháp là sử dụng lập trình semidefinite để tìm giá trị tối đa, và giá trị tối thiểu (có thể không âm), , của sao cho ma trận tương quan với mẫu thưa được quy định là dương semidefinite (psd). Tất cả các giá trị của sao cho , sẽ tạo ra ma trận psd (bài tập cho người đọc) ρmaxρminρρρmaxρρmax

Do đó, bạn phải chọn phân phối , chỉ có thể nhận các giá trị trong hoặc bạn phải sử dụng chấp nhận / từ chối và từ chối mọi giá trị được tạo của không tạo ra một ma trận psd.[ ρ m một x , ρ m một x ] ρρ[ρmax,ρmax]ρ

Ví dụ cho ma trận 4 nhân 4 bằng YALMIP trong 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) 

Kết quả: rho tối đa = 0,57735, rho tối thiểu = 0. Rõ ràng là 0 sẽ là giá trị tối thiểu của rho đối với rho là không có giá trị và ma trận quy định là psd, bất kể kích thước hoặc mô hình thưa thớt. Do đó, không cần thiết phải chạy tối ưu hóa semidefinite để tìm giá trị không âm tối thiểu của .ρ


4
Đây là một cách giải thích thú vị cho câu hỏi: nó giả sử tất cả các hệ số ngoài đường chéo đều bằng nhau (do đó đơn giản hóa rất nhiều vấn đề). Không rõ liệu đó có phải là giải thích dự định hay không, hoặc liệu tất cả các hệ số ngoài đường chéo được cho là thực hiện độc lập từ một phân phối chung.
whuber

Đó là cách giải thích tôi đã thực hiện. Bây giờ bạn đề cập đến nó, tôi có thể thấy một cách giải thích khác là có thể. Ít nhất là sự giải thích của tôi có ưu điểm dẫn đến một vấn đề khá rõ ràng. Tôi cho rằng một vấn đề có thể được đưa ra, mà giải pháp mà tôi chưa nghiên cứu, để tìm giá trị tối đa sao cho tất cả các phần tử khác không của một tam giác của ma trận tương quan có thể được điền vào không nhất thiết phải bằng các giá trị không âm giá trị đó và nhất thiết phải làm cho ma trận được điền đầy đủ là psd.
Mark L. Stone

0

Một ma trận tương quan là đối xứng, bán chính xác dương và có 'trên đường chéo chính của nó. Người ta có thể tìm thấy ma trận tương quan bằng cách giải chương trình semidefinite (SDP) sau đây trong đó hàm mục tiêu là tùy ý, giả sử, hàm zeron × n1n×n

minimizeOn,Xsubject tox11=x22==xnn=1XOn

Nếu một có các ràng buộc bổ sung, chẳng hạn như các ràng buộc thưa thớt

xij=0 for all (i,j)Z[n]×[n]

và các ràng buộc không phủ định, , sau đó người ta giải quyết SDP sauXOn

minimizeOn,Xsubject tox11=x22==xnn=1xij=0 for all (i,j)Z[n]×[n]XOnXOn

Một ví dụ3×3

Giả sử chúng ta muốn có và . Đây là tập lệnh MATLAB + CVX ,x 12 , x 230x13=0x12,x230

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

Chạy kịch bản,

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

Hãy xem CVX tìm thấy giải pháp nào,

>> X

X =

    1.0000    0.4143         0
    0.4143    1.0000    0.4143
         0    0.4143    1.0000

Là ma trận này semidefinite tích cực? Tích cực nhất định?

>> rank(X)

ans =

     3

>> eigs(X)

ans =

    1.5860
    1.0000
    0.4140

Đó là xác định tích cực, như mong đợi. Chúng ta có thể tìm thấy các ma trận tương quan nửa cực dương bằng cách chọn một hàm mục tiêu không khác (tuyến tính).


Bởi vì trên trang web này "tạo" sẽ được hiểu là "rút ra từ một phân phối ngẫu nhiên", bạn có thể giải thích cách mã của bạn tạo ra ma trận tương quan ngẫu nhiên và cho biết phân phối nào chúng tuân theo không?
whuber

@whuber OP đang yêu cầu điều không thể. Bạn đã nhận xét về điều đó vào ngày 1 tháng 1 năm 2015. Nếu bạn muốn tạo ma trận tương quan ngẫu nhiên, sau đó tạo ma trận vuông ngẫu nhiên và sử dụng nó trong hàm mục tiêu trong chương trình semidefinite ở trên. Hoặc, tạo ra các nhận thức của một biến ngẫu nhiên đồng nhất trên khối đặt chúng vào các mục nhập chéo của ma trận (tương quan) với 's trên đường chéo chính và loại bỏ những đường chéo không tích cực. Nếu có các ràng buộc không âm, thì lấy mẫu khối thống nhất
[1,1](n2)
1
[0,1](n2)
Rodrigo de Azevedo

3
@whuber Đây là hình elip 3D [png], ánh xạ tới tập hợp các ma trận tương quan . Những gì OP muốn là giao cắt elip với octant không âm, sau đó cắt nó với các mặt phẳng có dạng . Nếu ma trận là , thì nó phải nằm trong phần bên trong của elip. Sử dụng SDP với các hàm mục tiêu khác không, người ta có thể lấy mẫu bề mặt của elip. Vì elip là lồi, tổ hợp lồi của các điểm bề mặt cũng sẽ ánh xạ tới các ma trận tương quan. 3×3xij=00
Rodrigo de Azevedo

1
Đó là một cách tuyệt vời để mô tả tình huống.
whuber

3
Bạn đúng về cách thu nhỏ khối lượng tương đối. Đó chính xác là lý do tại sao đây là một vấn đề khó khăn.
whuber
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.