264
Le logiciel R - Maˆ ıtriser le langage
Prise en main
Ï
Codez en R pur, et en version hybride R-C/C++ (ou R-Fortran), les fonctions ar1simR(), et ar1simRC()-ar1simC (ou ar1simRF()-ar1simF).
Ces fonctions ont trois arguments d’entr´ ee : n ∈ N, φ ∈ (−1, 1) et M ∈ N.
Le calcul effectu´ e par ces fonctions est le suivant.
Pour m = 1, . . . , M :
a) simulation d’un vecteur al´ eatoire = ( 1 , . . . , n )
T de loi N n (0; I n ) ;
b) fabrication d’un vecteur x = (x 1 , . . . , x n )
T , avec x 1 = 1 , et tel que
pour tout t = 2, . . . , n, on ait x t = φx t−1 + t ;
c) calcul de l’estimateur des moindres carr´ es conditionnel ˆ
φ m de φ :
ˆ
φ m =
n
t=2 x t−1 x t
n
t=2 x
2
t−1
.
Les fonctions cr´ e´ ees devront retourner la valeur ˆ
φ − φ =
1
M
M
m=1
ˆ
φ m − φ,
permettant ainsi d’´ evaluer num´ eriquement le biais de l’estimateur ˆ
φ de φ.
Comparez ensuite la vitesse d’ex´ ecution de la version en R pur avec celle
de la version appelant du code C/C++ (ou Fortran). Pour cela, tra¸ cez
un graphique des valeurs (M, time M ) pour M = 1 000, 2 000, . . . , 100 000.
Vous prendrez n = 1 000 et φ = 0, 75.
Note : La fonction arima.sim() permet de r´ ealiser les points a) et b)
ci-dessus, tandis que la fonction arima() permet d’effectuer le point c).
Ces deux fonctions, d´ ej` a existantes sous R, ne doivent pas ˆ etre utilis´ ees
dans cette prise en main. Elles sont tr` es rapides puisque cod´ ees en C,
mais ne se limitent pas ` a effectuer les calculs pr´ ec´ edents.
Astuce
Afin de faciliter le d´ eveloppement de vos codes, un bon ´ editeur est toujours utile. Celui-ci devrait minimalement offrir l’indentation et la coloration syntaxique. Vous pourriez envisager d’utiliser l’un des gratuiciels
suivants :
– un ´ editeur de code R comme RStudio, Tinn-R ou Emacs ;
– un ´ editeur de code source C/C++ et Fortran comme Emacs ou
Code::Blocks (disponible ` a l’adresse http://www.codeblocks.org).
Le logiciel R - Maˆ ıtriser le langage
Prise en main
Ï
Codez en R pur, et en version hybride R-C/C++ (ou R-Fortran), les fonctions ar1simR(), et ar1simRC()-ar1simC (ou ar1simRF()-ar1simF).
Ces fonctions ont trois arguments d’entr´ ee : n ∈ N, φ ∈ (−1, 1) et M ∈ N.
Le calcul effectu´ e par ces fonctions est le suivant.
Pour m = 1, . . . , M :
a) simulation d’un vecteur al´ eatoire = ( 1 , . . . , n )
T de loi N n (0; I n ) ;
b) fabrication d’un vecteur x = (x 1 , . . . , x n )
T , avec x 1 = 1 , et tel que
pour tout t = 2, . . . , n, on ait x t = φx t−1 + t ;
c) calcul de l’estimateur des moindres carr´ es conditionnel ˆ
φ m de φ :
ˆ
φ m =
n
t=2 x t−1 x t
n
t=2 x
2
t−1
.
Les fonctions cr´ e´ ees devront retourner la valeur ˆ
φ − φ =
1
M
M
m=1
ˆ
φ m − φ,
permettant ainsi d’´ evaluer num´ eriquement le biais de l’estimateur ˆ
φ de φ.
Comparez ensuite la vitesse d’ex´ ecution de la version en R pur avec celle
de la version appelant du code C/C++ (ou Fortran). Pour cela, tra¸ cez
un graphique des valeurs (M, time M ) pour M = 1 000, 2 000, . . . , 100 000.
Vous prendrez n = 1 000 et φ = 0, 75.
Note : La fonction arima.sim() permet de r´ ealiser les points a) et b)
ci-dessus, tandis que la fonction arima() permet d’effectuer le point c).
Ces deux fonctions, d´ ej` a existantes sous R, ne doivent pas ˆ etre utilis´ ees
dans cette prise en main. Elles sont tr` es rapides puisque cod´ ees en C,
mais ne se limitent pas ` a effectuer les calculs pr´ ec´ edents.
Astuce
Afin de faciliter le d´ eveloppement de vos codes, un bon ´ editeur est toujours utile. Celui-ci devrait minimalement offrir l’indentation et la coloration syntaxique. Vous pourriez envisager d’utiliser l’un des gratuiciels
suivants :
– un ´ editeur de code R comme RStudio, Tinn-R ou Emacs ;
– un ´ editeur de code source C/C++ et Fortran comme Emacs ou
Code::Blocks (disponible ` a l’adresse http://www.codeblocks.org).
