Liệu dấu hiệu của điểm số hoặc tải trong PCA hoặc FA có ý nghĩa? Tôi có thể đảo ngược các dấu hiệu?


37

Tôi đã thực hiện phân tích thành phần chính (PCA) với R bằng hai hàm khác nhau ( prcompprincomp) và nhận thấy rằng điểm PCA khác nhau về dấu hiệu. Làm thế nào nó có thể được?

Xem xét điều này:

set.seed(999)
prcomp(data.frame(1:10,rnorm(10)))$x

            PC1        PC2
 [1,] -4.508620 -0.2567655
 [2,] -3.373772 -1.1369417
 [3,] -2.679669  1.0903445
 [4,] -1.615837  0.7108631
 [5,] -0.548879  0.3093389
 [6,]  0.481756  0.1639112
 [7,]  1.656178 -0.9952875
 [8,]  2.560345 -0.2490548
 [9,]  3.508442  0.1874520
[10,]  4.520055  0.1761397

set.seed(999)
princomp(data.frame(1:10,rnorm(10)))$scores
         Comp.1     Comp.2
 [1,]  4.508620  0.2567655
 [2,]  3.373772  1.1369417
 [3,]  2.679669 -1.0903445
 [4,]  1.615837 -0.7108631
 [5,]  0.548879 -0.3093389
 [6,] -0.481756 -0.1639112
 [7,] -1.656178  0.9952875
 [8,] -2.560345  0.2490548
 [9,] -3.508442 -0.1874520
[10,] -4.520055 -0.1761397

Tại sao các dấu hiệu ( +/-) khác nhau cho hai phân tích? Nếu sau đó tôi đang sử dụng các thành phần chính PC1PC2như các yếu tố dự báo trong hồi quy, nghĩa là lm(y ~ PC1 + PC2), điều này sẽ thay đổi hoàn toàn sự hiểu biết của tôi về tác động của hai biến yphụ thuộc vào phương pháp tôi đã sử dụng! Làm thế nào tôi có thể nói rằng PC1có ảnh hưởng tích cực đến yPC2có ảnh hưởng tiêu cực đến y?


Ngoài ra: Nếu dấu hiệu của các thành phần PCA là vô nghĩa, điều này có đúng với phân tích nhân tố (FA) không? Có thể chấp nhận lật (đảo ngược) dấu hiệu của điểm thành phần PCA / FA riêng lẻ (hoặc của tải, như một cột của ma trận tải) không?


10
+1. Câu hỏi này được hỏi rất nhiều trên diễn đàn này, trong các biến thể khác nhau (đôi khi về PCA, đôi khi về phân tích nhân tố). Đây là chủ đề phổ biến nhất về vấn đề này (nhờ câu trả lời xuất sắc của @ tháng 1), vì vậy sẽ rất thuận tiện khi đánh dấu các câu hỏi hiện tại và tương lai khác là các bản sao của câu hỏi này. Tôi lấy tự do để làm cho câu hỏi của bạn hơi chung chung hơn bằng cách thay đổi tiêu đề và bằng cách đề cập đến phân tích nhân tố cuối cùng. Tôi hy vọng bạn sẽ không phiền. Tôi cũng đã cung cấp một câu trả lời bổ sung.
amip nói rằng Phục hồi lại

1
Dấu hiệu là tùy ý; ý nghĩa thực chất hợp lý phụ thuộc vào dấu hiệu. Bạn luôn có thể thay đổi dấu hiệu của bất kỳ yếu tố nào được gắn nhãn "X" sang dấu hiệu ngược lại và gắn nhãn đó là "đối diện X". Nó đúng cho tải, cho điểm. Một số triển khai sẽ - để thuận tiện - thay đổi dấu hiệu của một yếu tố sao cho các giá trị dương (tính bằng điểm hoặc tải) trong đó sẽ chiếm ưu thế. Các triển khai khác không làm gì cả và để lại quyết định có đảo ngược dấu hiệu trên bạn hay không - nếu bạn quan tâm. Ý nghĩa thống kê (như cường độ hiệu ứng) không thay đổi ngoài "hướng" của nó bị đảo ngược.
ttnphns

Câu trả lời:


38

PCA là một phép biến đổi toán học đơn giản. Nếu bạn thay đổi các dấu hiệu của (các) thành phần, bạn không thay đổi phương sai được chứa trong thành phần đầu tiên. Hơn nữa, khi bạn thay đổi các dấu hiệu, các trọng số ( prcomp( ... )$rotation) cũng thay đổi dấu hiệu, do đó, việc diễn giải vẫn giống hệt nhau:

set.seed( 999 )
a <- data.frame(1:10,rnorm(10))
pca1 <- prcomp( a )
pca2 <- princomp( a )
pca1$rotation

trình diễn

                 PC1       PC2
X1.10      0.9900908 0.1404287
rnorm.10. -0.1404287 0.9900908

pca2$loadingshiển thị

Loadings:
          Comp.1 Comp.2
X1.10     -0.99  -0.14 
rnorm.10.  0.14  -0.99 

               Comp.1 Comp.2
SS loadings       1.0    1.0
Proportion Var    0.5    0.5
Cumulative Var    0.5    1.0

Vì vậy, tại sao các giải thích vẫn giữ nguyên?

Bạn thực hiện hồi quy PCA của ythành phần 1. Trong phiên bản đầu tiên ( prcomp), giả sử hệ số là dương: thành phần 1 càng lớn, y càng lớn. Nó có nghĩa gì khi nói đến các biến ban đầu? Vì trọng số của biến 1 ( 1:10trong a) là dương, điều đó cho thấy biến 1 càng lớn thì y càng lớn.

Bây giờ sử dụng phiên bản thứ hai ( princomp). Vì thành phần có dấu thay đổi, y càng lớn, thành phần 1 càng nhỏ - hệ số của y <trên PC1 bây giờ là âm. Nhưng tải của biến 1 cũng vậy; điều đó có nghĩa là, biến số 1 càng lớn, thành phần 1 càng nhỏ thì y càng lớn - diễn giải là như nhau.

Có thể, cách dễ nhất để thấy điều đó là sử dụng biplot.

library( pca3d )
pca2d( pca1, biplot= TRUE, shape= 19, col= "black"  )

trình diễn

nhập mô tả hình ảnh ở đây

Biplot tương tự cho các biến thể thứ hai cho thấy

pca2d( pca2$scores, biplot= pca2$loadings[,], shape= 19, col= "black" )

Như bạn thấy, hình ảnh được xoay 180 °. Tuy nhiên, mối quan hệ giữa trọng lượng / tải trọng (mũi tên đỏ) và các điểm dữ liệu (các chấm đen) là hoàn toàn giống nhau; do đó, việc giải thích các thành phần là không thay đổi.

nhập mô tả hình ảnh ở đây


Tôi thậm chí đã thêm hình ảnh bây giờ :-)
tháng 1,

1
Điều này là đúng, nhưng còn những dự đoán trong PCA thì sao? Tôi đang tự mình mã hóa PCA và một số trình duyệt riêng của tôi được lật so với MATLAB tích hợp princomp. Vì vậy, trong quá trình chiếu, dữ liệu dự kiến ​​của tôi cũng được lật trong một số kích thước. Mục tiêu của tôi là phân loại các hệ số. Dấu hiệu vẫn không quan trọng ở đây?
Đánh bạc Sibbs

Vì vậy, nếu chỉ đơn giản là vì lý do dễ hiểu hơn về PC của tôi, tôi muốn trao đổi các dấu hiệu của điểm số, điều đó có hợp lệ không?

13

Câu hỏi này được hỏi rất nhiều trên diễn đàn này, vì vậy tôi muốn bổ sung @ câu trả lời xuất sắc vào tháng Giêng với cân nhắc chung hơn một chút.

x1,x2,...xdz1,z2,...zkx1z1z2x12z1+3z223

ÔirtôigtôinmộttôivmộtrtôimộtbtôieSScoreSLomộtdtôingS.

z1

-1-1= =1.

Kết luận là đối với mỗi thành phần PCA hoặc FA, dấu hiệu của điểm số và mức tải của nó là tùy ý và vô nghĩa. Nó có thể được lật, nhưng chỉ khi dấu hiệu của cả điểm số và tải được đảo ngược cùng một lúc.


Điều này là đúng, nhưng còn những dự đoán trong PCA thì sao? Tôi đang tự mình mã hóa PCA và một số trình duyệt riêng của tôi được lật so với MATLAB tích hợp princomp. Vì vậy, trong quá trình chiếu, dữ liệu dự kiến ​​của tôi cũng được lật trong một số kích thước. Mục tiêu của tôi là phân loại các hệ số. Dấu hiệu vẫn không quan trọng ở đây?
Đánh bạc Sibbs

1
Vẫn không thành vấn đề. Tại sao nó? Dữ liệu lật hoàn toàn tương đương với dữ liệu không được lật cho tất cả các mục đích, bao gồm cả phân loại.
amip nói rằng Phục hồi lại

Vâng, không phải cho tất cả các mục đích. Để thống nhất giữa các thuật toán, tôi thực sự muốn khớp các dấu hiệu. Tuy nhiên, nó không phải là tất cả lật khi nhìn vào các thành phần. Làm thế nào là R chọn dấu hiệu để tôi có thể làm như vậy?
Myoch

1
@Myoch Tôi khuyên bạn nên phát minh ra quy ước của riêng bạn và áp dụng nó ở mọi nơi, trái ngược với việc cố gắng tìm hiểu R đang làm gì. Bạn có thể chọn dấu hiệu sao cho giá trị đầu tiên là dương hoặc hơn một nửa giá trị là dương, v.v.
amip nói rằng Phục hồi Monica

1
@user_anon Không có nghịch đảo.
amip nói phục hồi Monica

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.