Tôi muốn có quyền kiểm soát các đối tượng tôi tạo, ngay cả khi chúng có thể tùy ý.
Xem xét, sau đó, rằng tất cả các khả năng hiệp phương sai ma trận Σ có thể được thể hiện dưới dạngn × nΣ
Σ = P' Đường chéo ( σ1, σ2, ... , σn) P
nơi là một trực giao ma trận và σ 1 ≥ σ 2 ≥ ⋯ ≥ σ n ≥ 0 .Pσ1≥σ2≥⋯≥σn≥0
Về mặt hình học, điều này mô tả một cấu trúc hiệp phương sai với một loạt các thành phần chính có kích thước . Các thành phần này chỉ trong các hướng dẫn của các hàng của P . Xem các số liệu tại Ý nghĩa của phân tích thành phần chính, hàm riêng & giá trị riêng cho các ví dụ với n = 3 . Đặt σ i sẽ đặt độ lớn của hiệp phương sai và kích thước tương đối của chúng, từ đó xác định bất kỳ hình dạng elip mong muốn nào. Các hàng của P định hướng các trục của hình dạng mà bạn thích.σiPn=3σiP
Một đại số và lợi ích của phương pháp này tính toán là khi , Σ được dễ dàng đảo ngược (mà là một hoạt động phổ biến trên hiệp phương sai ma trận):σn>0Σ
Σ−1=P′ Diagonal(1/σ1,1/σ2,…,1/σn) P.
Đừng quan tâm đến các hướng, mà chỉ về phạm vi kích thước của ? Điều đó tốt: bạn có thể dễ dàng tạo ra một ma trận trực giao ngẫu nhiên. Chỉ cần bọc n 2 iid các giá trị chuẩn vào một ma trận vuông và sau đó trực giao hóa nó. Nó gần như chắc chắn sẽ làm việc (với điều kiện n không phải là rất lớn). Phân tách QR sẽ làm điều đó, như trong mã nàyσin2n
n <- 5
p <- qr.Q(qr(matrix(rnorm(n^2), n)))
Công trình này vì -variate phân phối multinormal để tạo ra là "hình elip": nó là bất biến theo tất cả quay và phản xạ (thông qua nguồn gốc). Do đó, tất cả các ma trận trực giao được tạo ra đồng nhất, như lập luận tại Làm thế nào để tạo các điểm phân bố đồng đều trên bề mặt của hình cầu đơn vị 3-d? .n
Một cách nhanh chóng để có được từ P và σ i , một khi bạn đã xác định hoặc tạo ra chúng, sử dụng và khai thác 's tái sử dụng các mảng trong phép tính số học, như trong ví dụ này với σ = ( σ 1 , ... , σ 5 ) = ( 5 , 4 , 3 , 2 , 1 ) :ΣPσTôicrossprod
R
σ= ( σ1, ... , σ5) = ( 5 , 4 , 3 , 2 , 1 )
Sigma <- crossprod(p, p*(5:1))
Như một tấm séc, sự phân hủy Số ít giá trị gia tăng phải trả lại cả hai và P ' . Bạn có thể kiểm tra nó bằng lệnhσP'
svd(Sigma)
Tất nhiên nghịch đảo Sigma
thu được chỉ bằng cách thay đổi phép nhân bằng thành một phép chia:σ
Tau <- crossprod(p, p/(5:1))
Bạn có thể xác minh điều này bằng cách xem zapsmall(Sigma %*% Tau)
, mà nên là ma trận sắc. Một nghịch đảo tổng quát (cần thiết cho tính toán hồi quy) thu được bằng cách thay thế bất kỳ σ i ≠ 0 bằng 1 / σ i , chính xác như trên, nhưng giữ bất kỳ số không trong σ i như họ.n × nσTôi≠ 01 / σTôiσTôi