ฉันมีข้อมูลส่งคืน 10 ปีต่อวันสำหรับ 28 สกุลเงินที่แตกต่างกัน ฉันต้องการแยกส่วนประกอบหลักตัวแรก แต่แทนที่จะใช้งาน PCA ตลอดทั้ง 10 ปีฉันต้องการเปิดหน้าต่างใหม่ 2 ปีเพราะพฤติกรรมของสกุลเงินมีวิวัฒนาการและฉันต้องการสะท้อนสิ่งนี้ อย่างไรก็ตามฉันมีปัญหาที่สำคัญนั่นคือทั้งฟังก์ชั่น princomp () และ prcomp () มักจะกระโดดจากการโหลดเชิงบวกถึงเชิงลบในการวิเคราะห์ PCA ที่อยู่ติดกัน (เช่น 1 วันห่างกัน) ดูแผนภูมิการโหลดสำหรับสกุลเงิน EUR:
เห็นได้ชัดว่าฉันไม่สามารถใช้สิ่งนี้ได้เพราะการโหลดที่อยู่ติดกันจะกระโดดจากบวกเป็นลบดังนั้นซีรี่ส์ของฉันที่ใช้มันจะผิดพลาด ตอนนี้มาดูค่าสัมบูรณ์ของการโหลดสกุลเงิน EUR:
ปัญหาคือแน่นอนว่าฉันยังไม่สามารถใช้สิ่งนี้ได้เพราะคุณสามารถเห็นได้จากแผนภูมิด้านบนว่าการโหลดนั้นไปจากเชิงลบเป็นบวกและย้อนกลับไปในบางครั้งซึ่งเป็นลักษณะที่ฉันต้องรักษาไว้
มีวิธีใดบ้างที่ฉันสามารถแก้ไขปัญหานี้ได้ ฉันสามารถบังคับให้การปฐมนิเทศ eigenvector เหมือนกันใน PCAs ที่อยู่ติดกันได้หรือไม่
โดยวิธีการที่ปัญหานี้เกิดขึ้นกับฟังก์ชั่น FactoMineR () รหัสสำหรับ rollapply อยู่ที่นี่:
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
และEUR +0.21 ZAR -0.79 USD -0.4
มีลักษณะคล้ายกันมากมาก คุณเพียงแค่ย้อนกลับเข้าสู่ผลลัพธ์ใด ๆ ของทั้งสอง