Zacznij terazZacznij za darmo

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

Zobacz kurs

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))))
Edytuj i uruchom kod