Boucles foreach imbriquées pour les tendances de prix
La Bourse est bien connue pour son comportement imprévisible. Vous travaillez pour une firme d'investissement et votre supérieur souhaite voir les tendances des prix des actions sur une fenêtre d'une semaine.
Vous avez obtenu les données des prix quotidiens des actions de dix entreprises technologiques depuis 2015. La ou le Data Scientist de votre équipe a fourni du code pour ajuster des modèles de régression. Vous prévoyez paralléliser ce code à l'aide de foreach(), %:% et %dopar%.
Le nombre total de colonnes à parcourir est enregistré dans votre espace de travail sous ncols, et le nombre de lignes sous nrows. Les packages parallel, doParalel et foreach ont été chargés pour vous. Le grappe, cl, a été configuré. Vous devez écrire les boucles foreach() imbriquées.
Cette activité fait partie du cours
Programmation parallèle en R
Instructions de l’exercice
- Enregistrez le grappe à utiliser avec les boucles
foreach. - Spécifiez une boucle foreach pour parcourir les colonnes de un à
ncols, recueillir les résultats avec"cbind"et utiliser l'opérateur d'imbrication. - Spécifiez une autre boucle foreach pour parcourir les lignes de un à
nrows, recueillir les résultats avec"c"et utiliser l'opérateur do-parallel. - Arrêtez le grappe lorsque tous les calculs sont terminés.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# Register the cluster to use with %dopar%
___
# Use foreach loop to iterate over columns one to ncol
moving_trend <- foreach(___, ___) %:%
# Iterate over rows one to nrows within each column
foreach(___, ___) %dopar% {
prices <- data[row:(row + 6), col]
if (any(is.na(prices))) NA
else {days <- 1:7
model <- lm(prices ~ days)
model$coefficients[2]}
}
# Stop cluster
___
print(paste("Total number of models fit:", sum(!is.na(moving_trend))))