Tôi có 10 năm dữ liệu trả về hàng ngày cho 28 loại tiền tệ khác nhau. Tôi muốn trích xuất thành phần chính đầu tiên, nhưng thay vì vận hành PCA trong toàn bộ 10 năm, tôi muốn nhanh chóng mở cửa sổ 2 năm, vì các hành vi của tiền tệ phát triển và vì vậy tôi muốn phản ánh điều này. Tuy nhiên, tôi có một vấn đề lớn, đó là cả hai hàm Princeomp () và prcomp () thường sẽ chuyển từ tải tích cực sang tải âm trong các phân tích PCA liền kề (tức là cách nhau 1 ngày). Hãy nhìn vào biểu đồ nạp tiền tệ EUR:
Rõ ràng tôi không thể sử dụng điều này bởi vì các tải liền kề sẽ chuyển từ dương sang âm, vì vậy chuỗi của tôi sử dụng chúng sẽ bị lỗi. Bây giờ hãy xem giá trị tuyệt đối của việc nạp tiền EUR:
Vấn đề tất nhiên là tôi vẫn không thể sử dụng điều này bởi vì bạn có thể thấy từ biểu đồ hàng đầu rằng việc tải không chuyển từ tiêu cực sang tích cực và đôi khi trở lại, một đặc điểm mà tôi cần phải bảo tồn.
Có cách nào tôi có thể khắc phục vấn đề này không? Tôi có thể buộc định hướng eigenvector luôn giống nhau trong các PCA liền kề không?
Nhân tiện, vấn đề này cũng xảy ra với hàm FactoMineR PCA (). Mã cho rollapply là ở đây:
rollapply(retmat, windowl, function(x) summary(princomp(x))$loadings[, 1], by.column = FALSE, align = "right") -> princomproll
EUR -0.2 ZAR +0.8 USD +0.41
và EUR +0.21 ZAR -0.79 USD -0.4
đang rất rất giống nhau. Bạn chỉ cần đảo ngược dấu hiệu trong bất kỳ hai kết quả.