Câu trả lời:
Bài viết sau: Duy trì thành phần trong phân tích thành phần chính với ứng dụng vào dữ liệu microarray cDNA của Cangelosi và Goriely đưa ra một cái nhìn tổng quan khá hay về quy tắc chuẩn để phát hiện số lượng thành phần trong nghiên cứu. (Biểu đồ Scree, Tỷ lệ phương sai tổng số được giải thích, quy tắc giá trị trung bình trung bình, biểu đồ Log-eigenvalue, v.v.) Hầu hết chúng đều khá đơn giản để thực hiện trong R.
Nói chung nếu âm mưu scree của bạn rất không kết luận thì bạn chỉ cần "chọn chất độc". Không có đúng hay sai tuyệt đối cho bất kỳ dữ liệu nào vì trong thực tế số lượng PC sử dụng thực sự phụ thuộc vào sự hiểu biết của bạn về vấn đề này. Tập dữ liệu duy nhất bạn có thể "thực sự" biết được chiều là của thứ bạn tự xây dựng. :-) Thành phần chính vào cuối ngày cung cấp phân tách dữ liệu tối ưu theo số liệu RSS (trong đó sản phẩm phụ bạn nhận được mỗi thành phần để biểu thị chế độ biến đổi chính) và bao gồm hoặc loại trừ một số thành phần nhất định ra lệnh cho nhận thức của bạn về chiều kích của vấn đề của bạn.
Đối với sở thích cá nhân, tôi thích cách tiếp cận của Minka về lựa chọn thứ nguyên tự động này cho PCA , dựa trên cách giải thích xác suất của PCA nhưng sau đó, bạn lại tham gia vào trò chơi cố gắng mô hình hóa khả năng dữ liệu của mình theo một chiều nhất định. (Liên kết cung cấp mã Matlab nếu bạn muốn theo lý do này.)
Cố gắng hiểu dữ liệu của bạn nhiều hơn. ví dụ. Bạn có thực sự tin rằng 99,99% biến thể của tập dữ liệu của bạn là do các đồng biến mô hình của bạn không? Nếu không có lẽ bạn có thể không cần bao gồm các kích thước thể hiện một tỷ lệ nhỏ như vậy của tổng phương sai. Bạn có nghĩ rằng trong thực tế, một thành phần phản ánh sự thay đổi dưới ngưỡng của sự khác biệt đáng chú ý? Điều đó một lần nữa có lẽ có nghĩa là có rất ít sự liên quan trong việc đưa thành phần đó vào phân tích của bạn.
Trong mọi trường hợp, chúc may mắn và kiểm tra dữ liệu của bạn một cách cẩn thận. (Vẽ chúng cũng làm nên điều kỳ diệu.)
Đã có những công việc tiếp theo rất hay về vấn đề này trong vài năm qua kể từ khi câu hỏi này ban đầu được hỏi và trả lời. Tôi đánh giá cao bài báo sau của Gavish và Donoho: Ngưỡng cứng tối ưu cho các giá trị số ít là 4 / sqrt (3)
Kết quả của họ dựa trên phân tích tiệm cận (nghĩa là có một giải pháp tối ưu được xác định rõ khi ma trận dữ liệu của bạn trở nên vô cùng lớn), nhưng chúng cho thấy kết quả bằng số ấn tượng cho thấy quy trình tối ưu không có triệu chứng hoạt động đối với các bộ dữ liệu có kích thước nhỏ và thực tế, ngay cả dưới các nhiễu khác nhau mô hình.
Về cơ bản, quy trình tối ưu tập trung vào việc ước tính nhiễu, , được thêm vào từng phần tử của ma trận. Dựa trên điều này, bạn tính toán một ngưỡng và loại bỏ các thành phần chính có giá trị số ít nằm dưới ngưỡng. Đối với ma trận vuông , hằng số tỷ lệ 4 / sqrt (3) hiển thị như được đề xuất trong tiêu đề:
Họ cũng giải thích trường hợp không vuông trong bài báo. Họ có một bổ sung mã đẹp (trong MATLAB) ở đây, nhưng các thuật toán sẽ dễ dàng thực hiện trong R hoặc bất cứ nơi nào khác: https://purl.stanford.edu/vg705qn9070
Hãy cẩn thận:
Vấn đề với tiêu chí của Kaiser (tất cả các giá trị riêng lớn hơn một) là số lượng các yếu tố được trích xuất thường bằng khoảng một phần ba số lượng vật phẩm hoặc thang đo trong pin, bất kể nhiều yếu tố bổ sung có phải là tiếng ồn hay không. Phân tích song song và tiêu chí scree nói chung là các thủ tục chính xác hơn để xác định số lượng các yếu tố cần trích xuất (theo các văn bản cổ điển của Harmon và Ledyard Tucker cũng như công việc gần đây của Wayne Velicer.
psy
hoặcpsych
gói trong các chương trình R và SPSS, SAS và MATLAB để xác định số lượng thành phần và yếu tố. Sử dụng Phân tích song song và Kiểm tra MAP của Velic nói chung hơn.