Saya memiliki data pengembalian harian 10 tahun untuk 28 mata uang yang berbeda. Saya ingin mengekstraksi komponen utama pertama, tetapi alih-alih mengoperasikan PCA selama 10 tahun penuh, saya ingin membuka jendela 2 tahun, karena perilaku mata uang berkembang dan saya ingin merefleksikan ini. Namun saya memiliki masalah besar, yaitu bahwa kedua fungsi princomp () dan prcomp () akan sering melompat dari muatan positif ke negatif dalam analisis PCA yang berdekatan (yaitu terpisah 1 hari). Lihatlah grafik pemuatan untuk mata uang EUR:
Jelas saya tidak bisa menggunakan ini karena pemuatan yang berdekatan akan melompat dari positif ke negatif, jadi seri saya yang menggunakannya akan salah. Sekarang lihat nilai absolut dari pemuatan mata uang EUR:
Masalahnya tentu saja saya masih tidak dapat menggunakan ini karena Anda dapat melihat dari grafik atas bahwa pemuatan tidak berubah dari negatif ke positif dan kembali pada waktu, suatu karakteristik yang saya perlu pertahankan.
Apakah ada cara saya bisa mengatasi masalah ini? Bisakah saya memaksakan orientasi vektor eigen untuk selalu sama di PCA yang berdekatan?
By the way masalah ini juga terjadi dengan fungsi FactoMineR PCA (). Kode untuk rollapply ada di sini:
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
dan EUR +0.21 ZAR -0.79 USD -0.4
yang sangat sangat mirip. Anda cukup membalikkan masuk salah satu dari dua hasil.