IniziaInizia gratis

Cicli foreach annidati per i trend dei prezzi

Il mercato azionario è famoso per il suo comportamento imprevedibile. Lavori per una società di investimenti e il tuo capo vuole vedere l’andamento dei prezzi azionari su una finestra di una settimana.

Hai ottenuto i dati dei prezzi giornalieri di dieci aziende tech dal 2015. Il Data Scientist del tuo team ha fornito il codice per adattare modelli di regressione. Tu intendi parallelizzare questo codice usando foreach(), %:% e %dopar%.

Il numero totale di colonne su cui iterare è salvato nel tuo workspace come ncols, e il numero di righe come nrows. I pacchetti parallel, doParalel e foreach sono già stati caricati per te. Il cluster, cl, è stato configurato. Devi scrivere i cicli foreach() annidati.

Questo esercizio fa parte del corso

Programmazione parallela in R

Visualizza il corso

Istruzioni dell'esercizio

  • Registra il cluster da usare con i cicli foreach.
  • Specifica un ciclo foreach per iterare sulle colonne da 1 a ncols, raccogliere i risultati con "cbind" e usare l’operatore di annidamento.
  • Specifica un altro ciclo foreach per iterare sulle righe da 1 a nrows, raccogliere i risultati con "c" e usare l’operatore do-parallel.
  • Arresta il cluster quando tutte le computazioni sono terminate.

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

# 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))))
Modifica ed esegui il codice