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
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))))