Một bài báo đề cập đến một mô phỏng của Monte Monte Carlo để xác định số lượng các thành phần chính làm thế nào nó hoạt động?


10

Tôi đang thực hiện phân tích Matlab trên dữ liệu MRI nơi tôi đã thực hiện PCA trên ma trận có kích thước 10304x236 trong đó 10304 là số lượng voxels (nghĩ về chúng như pixel) và 236 là số lượng thời gian. PCA cung cấp cho tôi 236 Eigenvalues ​​và các hệ số liên quan của chúng. Đây là tất cả tốt đẹp. Tuy nhiên, khi đến lúc quyết định giữ lại bao nhiêu thành phần, bài báo tôi đang sao chép sẽ nói như sau (xin vui lòng cho tôi biết nếu cần làm rõ vì đây chỉ là một phần ngắn của toàn bộ bài viết):

Sau đó, chúng tôi đã thực hiện mô phỏng Monte Carlo để xác định số lượng thành phần chính (PC) để trích xuất từ ​​dữ liệu ROI phiền toái cho mỗi lần quét. Một phân phối null của các giá trị riêng dự kiến ​​được tạo riêng cho dữ liệu mã hóa và phần còn lại cho từng đối tượng bằng cách thực hiện PCA trên dữ liệu được phân phối bình thường có thứ hạng bằng với dữ liệu ROI mã hóa và phần còn lại. Các PC từ dữ liệu ROI phiền toái thực sự sau đó đã được chọn cho phần còn lại hoặc quét mã hóa nếu giá trị riêng liên quan của chúng vượt quá khoảng tin cậy thứ 99 của các giá trị riêng từ mô phỏng Monte Carlo.

Tambini & Davachi, PNAS 2013, Sự tồn tại của các mẫu multivoxel hồi hải mã vào phần còn lại sau mã hóa có liên quan đến bộ nhớ .

Tôi hoàn toàn không biết phải làm gì ở đây. Tôi đã quen với việc chọn các thành phần dựa trên phương sai tích lũy được giải thích. Suy nghĩ của tôi là thế này:

Sau đó, chúng tôi đã thực hiện mô phỏng Monte Carlo để xác định số lượng thành phần chính (PC) để trích xuất từ ​​dữ liệu ROI phiền toái cho mỗi lần quét.

Sim Monte Carlo chỉ có nghĩa là làm 1000 lần (hoặc như vậy) sau đây, phải không?

Một phân phối null của các giá trị riêng dự kiến ​​đã được tạo bằng cách thực hiện PCA trên dữ liệu được phân phối bình thường có thứ hạng bằng với dữ liệu ROI mã hóa và phần còn lại.

Đầu tiên, tôi giả sử 'thứ hạng bằng nhau' về cơ bản có nghĩa là tôi sẽ tạo ra một ma trận có cùng kích thước với bản gốc (10304x236). Xét về 'dữ liệu được phân phối bình thường có thứ hạng bằng nhau' ... điều này có nghĩa là tôi nên tạo ma trận 10304x236 của các số ngẫu nhiên từ phân phối bình thường? Matlab có một chức năng gọi là 'Normrnd' thực hiện điều này nhưng yêu cầu đầu vào mu và sigma. Tôi có thể sử dụng mu và sigma giống như những dữ liệu được lấy từ tập dữ liệu ban đầu không? Đây có phải là ít nhiều ý nghĩa của 'giá trị bản địa dự kiến' không vì tôi không biết phân phối của giá trị bản địa EXPECTED sẽ như thế nào.

Tôi đoán vấn đề của tôi ít nhiều là tôi không biết cách tạo ra một 'phân phối null' của giá trị bản địa.

Câu trả lời:


6

Một thuật ngữ liên quan đến câu hỏi này là "Phân tích song song".

Nói một cách đơn giản, mô phỏng monte carlo sẽ tạo ra 1000 ma trận 10304x236 của dữ liệu được phân phối ngẫu nhiên thông thường (tất nhiên, giả định rằng dữ liệu bạn phân tích thường được phân phối; nếu dữ liệu của bạn được phân phối khác nhau, bạn sẽ sử dụng một phân phối ngẫu nhiên khác nhau). Sau đó, bạn sẽ trích xuất các giá trị riêng cho từng bộ dữ liệu bạn đã tạo và tính trung bình cho mỗi giá trị riêng trên tất cả 1000 lần sao chép (hoặc như vậy) trong khi cũng tạo các khoảng tin cậy. Sau đó, bạn so sánh giá trị riêng từ dữ liệu của bạn với giá trị riêng trung bình từ mô phỏng của bạn.

Bất cứ nơi nào giá trị riêng từ dữ liệu của bạn vượt quá khoảng tin cậy thứ 99 của giá trị riêng từ mô phỏng monte carlo, đó là bao nhiêu yếu tố phân tích sẽ đề nghị giữ lại.

Ví dụ: nếu giá trị riêng thứ 25 từ dữ liệu của bạn là 2,10 và 26 là 1,97 và khoảng tin cậy thứ 99 của các giá trị riêng thứ 25 từ 1000 (hoặc như vậy) là 2,04 và 26 là 2,01, điều này sẽ gợi ý cho bạn giữ lại 25 thành phần.

Có các chức năng được xây dựng để làm điều này cho bạn. Một liên kết cho Matlab là đây:

http://www.mathworks.com/matlabcentral/fileexchange/44996-pool-analysis--pa--to-for-determining-the-number-of-components-to-retain-from-pca/content/pa_test. m

Tôi tìm thấy cái đó bằng cách googling "Phân tích song song trong Matlab".


+1. Điều này rất rõ ràng và liên kết sẽ giúp tôi rất nhiều! Tôi đã mã hóa để trích xuất các giá trị riêng được phân phối ngẫu nhiên một cách chính xác nhưng không sử dụng khoảng tin cậy theo cách chính xác. Cảm ơn bạn rất nhiều vì đã trả lời của bạn.
chainhomelow

Vui vẻ giúp đỡ! Rất vui vì nó hữu ích cho bạn.
maxwelldeux
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.