CommencezCommencez gratuitement

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

Voir le cours

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))))
Modifier et exécuter le code