Projet de lecture dirigée portant sur l'estimation des modèles de taux d'intérêts basés sur des processus stochastiques. En collaboration avec mon superviseur de mémoire Andrew Luong.
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

114 linhas
3.0KB

  1. ## principal component analysis
  2. ## données .25,2,3,5,10,30 ans USGG pris sur Bloomberg
  3. ## librairies
  4. library("xtable")
  5. yc <- data.matrix(read.table("usgg.csv",header=T, sep=";",na.strings = "#NA"))[,-1]
  6. dt <- yc[,7]
  7. yc <- yc[,-7]
  8. time <- c(.25,2,3,5,10,30)
  9. yc.center <- t(t(yc)-apply(yc,2,mean))
  10. ## plot des séries
  11. pdf("PCA-tseries.pdf")
  12. par(mfrow=c(3,2))
  13. ts.plot(yc[,1], main="90 jours")
  14. ts.plot(yc[,2], main="2 ans")
  15. ts.plot(yc[,3], main="3 ans")
  16. ts.plot(yc[,4], main="5 ans")
  17. ts.plot(yc[,5], main="10 ans")
  18. ts.plot(yc[,6], main="30 ans")
  19. dev.off()
  20. ## plot de l'observation 1
  21. pdf("PCA-observation1.pdf")
  22. plot(time,yc[1,],type="l")
  23. ## plot de l'observation 1 avec spline
  24. lines(spline(time,yc[1,]),type="l", col="red")
  25. dev.off()
  26. ## différenciation
  27. yc.diff <- diff(yc.center)
  28. ##
  29. ## Approche #1 (cov)
  30. ##
  31. ## matrice de variance covariance des différences
  32. yc.diff.vcov <- cov(yc.diff)
  33. ## matrice P (vecteurs propres)
  34. P <- eigen(yc.diff.vcov)$vectors
  35. sink("PCA-Pcov.tex",append=FALSE,split=FALSE)
  36. xtable(P,digits=4)
  37. sink()
  38. ## valeurs propres (variance par composant)
  39. lambda <- eigen(yc.diff.vcov)$values
  40. sink("PCA-lambdacov.tex",append=FALSE,split=FALSE)
  41. xtable(t(as.matrix(lambda)),digits=4)
  42. sink()
  43. ## écart-type par composant
  44. sq.lambda <- sqrt(lambda)
  45. ## variance totale (trace de la matrice de valeurs propres)
  46. totvar <- sum(lambda)
  47. ## fraction expliquée par composante
  48. lambda/totvar
  49. sink("PCA-prcov.tex",append=FALSE,split=FALSE)
  50. xtable(t(as.matrix(lambda/totvar)),digits=4)
  51. sink()
  52. ##
  53. ## Approche #2 (corr)
  54. ##
  55. ## matrice de corrélations des différences
  56. yc.diff.corr <- cor(yc.diff)
  57. ## matrice P (vecteurs propres)
  58. Pcorr <- eigen(yc.diff.corr)$vectors
  59. sink("PCA-Pcorr.tex",append=FALSE,split=FALSE)
  60. xtable(Pcorr,digits=4)
  61. sink()
  62. ## valeurs propres (variance par composant)
  63. lambda.corr <- eigen(yc.diff.corr)$values
  64. sink("PCA-lambdacorr.tex",append=FALSE,split=FALSE)
  65. xtable(t(as.matrix(lambda.corr)),digits=4)
  66. sink()
  67. ## écart-type par composant
  68. sq.lambda.corr <- sqrt(lambda.corr)
  69. ## variance totale (trace de la matrice de valeurs propres)
  70. totvar.corr <- sum(lambda.corr)
  71. ## fraction expliquée par composante
  72. lambda.corr/totvar.corr
  73. sink("PCA-prcorr.tex",append=FALSE,split=FALSE)
  74. xtable(t(as.matrix(lambda.corr/totvar.corr)),digits=4)
  75. sink()
  76. ## graphiques (3 premieres composantes: parallel shift, tilt, curvature)
  77. pdf("PCA-composantes1-2-3.pdf")
  78. par(mfrow=c(2,3))
  79. plot(time,P[,1],col="blue", ylim=c(-1,1), type="l")
  80. plot(time,P[,2],col="blue", ylim=c(-1,1), type="l")
  81. plot(time,P[,3],col="blue", ylim=c(-1,1), type="l")
  82. plot(time,Pcorr[,1],col="red", ylim=c(-1,1), type="l")
  83. plot(time,Pcorr[,2],col="red", ylim=c(-1,1), type="l")
  84. plot(time,Pcorr[,3],col="red", ylim=c(-1,1), type="l")
  85. dev.off()
  86. ## produits Score (volatilité expliquée par composante)
  87. Score <- yc.center %*% P
  88. Scorecorr <- yc.center %*% Pcorr
  89. pdf("PCA-score.pdf")
  90. par(mfrow=c(2,1))
  91. ts.plot(Score,col="blue")
  92. ts.plot(Scorecorr,col="red")
  93. dev.off()
  94. ## utilisation de la fonction princomp pour fins de comparaison
  95. yc.princomp <- prcomp(yc.diff)
  96. pdf("PCA-verif-princomp.pdf")
  97. plot(yc.princomp, type="l")
  98. dev.off()