Zagnieżdżone pętle foreach do analizy trendów cenowych
Rynek akcji słynie z nieprzewidywalnego zachowania. Pracujesz w firmie inwestycyjnej, a twój szef chce zobaczyć trendy cen akcji w oknie czasowym jednego tygodnia.
Zebrałeś dane o dziennych cenach akcji dziesięciu spółek technologicznych od 2015 roku. Data Scientist z twojego zespołu przygotował kod do dopasowywania modeli regresji. Planujesz zrównoleglić ten kod przy użyciu foreach(), %:% oraz %dopar%.
Całkowita liczba kolumn do iteracji jest zapisana w przestrzeni roboczej jako ncols, a liczba wierszy jako nrows. Pakiety parallel, doParalel i foreach są już załadowane. Klaster cl został skonfigurowany. Twoim zadaniem jest napisanie zagnieżdżonych pętli foreach().
To ćwiczenie jest częścią kursu
Programowanie równoległe w R
Instrukcje do ćwiczenia
- Zarejestruj klaster do użycia z pętlami
foreach. - Zdefiniuj pętlę foreach iterującą po kolumnach od 1 do
ncols, zbierającą wyniki za pomocą"cbind"i używającą operatora zagnieżdżania. - Zdefiniuj drugą pętlę foreach iterującą po wierszach od 1 do
nrows, zbierającą wyniki za pomocą"c"i używającą operatora równoległego wykonania. - Zatrzymaj klaster po zakończeniu wszystkich obliczeń.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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))))