Tạo các giá trị từ một phân phối Gaussian đa biến


14

Tôi hiện đang cố gắng để giá trị mô phỏng của một N chiều biến ngẫu nhiên X có một phân phối chuẩn nhiều chiều với vector trung bình μ=(μ1,...,μN)T và ma trận hiệp phương sai S .

Tôi hy vọng có thể sử dụng một thủ tục tương tự như phương pháp nghịch đảo CDF, có nghĩa là tôi muốn đầu tiên tạo ra một N chiều thống nhất biến ngẫu nhiên và sau đó cắm đó vào CDF nghịch đảo của phân phối này, vì vậy để tạo ra giá trị .XUX

Tôi đang gặp vấn đề vì quy trình này không được ghi chép rõ ràng và có một số khác biệt nhỏ giữa hàm mvnrnd trong MATLABmô tả mà tôi tìm thấy trên Wikipedia .

Trong trường hợp của tôi, tôi cũng đang chọn ngẫu nhiên các tham số của phân phối. Cụ thể, tôi tạo từng phương tiện, , từ phân phối thống nhất . Sau đó tôi xây dựng ma trận hiệp phương sai bằng thủ tục sau: U ( 20 , 40 ) SμiU(20,40)S

  1. Tạo ma trận tam giác thấp hơn trong đó với và cho L ( i , i ) = 1 i = 1 .. N L ( i , j ) = U ( - 1 , 1 ) i < jLL(i,i)=1i=1..NL(i,j)=U(1,1)i<j

  2. Hãy nơi biểu thị transpose của .L T LS=LLTLTL

Thủ tục này cho phép tôi đảm bảo rằng là đối xứng và xác định dương. Nó cũng cung cấp một ma trận tam giác thấp hơn sao cho , mà tôi tin là cần thiết để tạo ra các giá trị từ phân phối.L S = L L TSLS=LLT

Sử dụng các hướng dẫn trên Wikipedia, tôi sẽ có thể tạo ra giá trị của sử dụng một chiều thống nhất như sau:NXN

  • X=μ+LΦ1(U)

Theo hàm MATLAB, tuy nhiên, điều này thường được thực hiện như sau:

  • X=μ+LTΦ1(U)

Trong trường hợp là CDF nghịch đảo của một chiều, tách phân phối, bình thường, và sự khác biệt duy nhất giữa hai phương pháp đơn giản là liệu có nên sử dụng hoặc .Φ1NLLT

MATLAB hay Wikipedia là con đường để đi? Hay cả hai đều sai?


2
Như đã nêu, cả hai đều sai vì là một vectơ hàng trong khi T i n v n o r m ( U ) phải là một vectơ cột. Khi bạn nhận được hàng và cột của bạn thẳng ra, câu hỏi này nên trả lời riêng của mình chỉ đơn giản bằng cách xác định phiên bản nào của ( X - μ ) ' ( X - μ ) hoặc ( X - μ ) ( X - μ ) 'μTinvnorm(U) (Xμ)(Xμ)(Xμ)(Xμ)đưa ra một ma trận và phiên bản cho chỉ là một số: kiểm tra mà bạn có thể tính toán sự mong đợi của phiên bản ma trận và đó là nó mang lại cho . S
whuber

@whuber Yeap. Thực hiện các thay đổi trong định dạng cho câu hỏi. Cảm ơn vì tiền boa - chắc chắn là cách dễ nhất để kiểm tra.
Berk U.

Câu trả lời:


14

Nếu là một vector cột của tiêu chuẩn bình thường RV, sau đó nếu bạn thiết lập Y = L X , hiệp phương sai của YL L T . XN(0,I)Y=LXYLLT

Tôi nghĩ rằng vấn đề bạn gặp phải có thể xuất phát từ thực tế là hàm mvnrnd của matlab trả về các vectơ hàng dưới dạng mẫu, ngay cả khi bạn chỉ định giá trị trung bình là vectơ cột. ví dụ,

 > size(mvnrnd(ones(10,1),eye(10))  
 > ans =
 >      1    10

Và lưu ý rằng việc chuyển đổi một vectơ hàng cung cấp cho bạn công thức ngược lại. nếu là một vectơ hàng, thì Z = X L T cũng là một vectơ hàng, vì vậy Z T = L X T là một vectơ cột và hiệp phương sai của Z T có thể được viết E [ Z T Z ] = L L T . XZ=XLTZT=LXTZTE[ZTZ]=LLT

Dựa trên những gì bạn đã viết, mặc dù công thức Wikipedia là đúng: nếu là một vector hàng được trả về bởi matlab, bạn không thể trái nhân nó bằng L T . (Nhưng nhân đúng với L T sẽ cung cấp cho bạn một mẫu có cùng hiệp phương sai của L L T ).Φ1(U)LTLTLLT


Lưu ý rằng trợ giúp cho mvnrnd trong matlab sử dụng làm số lượng mẫu; số lượng kích thước là D . Vì vậy, nếu bạn yêu cầu N mẫu từ một đa biến D -chiều đa chiều bình thường, nó sẽ trả về chúng dưới dạng ma trận N × D. NDNDN×D
jpvel
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.