НачатьНачать бесплатно

Вложенные циклы foreach для анализа ценовых трендов

Фондовый рынок известен своей непредсказуемостью. Вы работаете в инвестиционной компании, и ваш руководитель хочет видеть тренды цен на акции в скользящем окне длиной в одну неделю.

Вы получили данные о ежедневных ценах акций десяти технологических компаний начиная с 2015 года. Специалист по данным в вашей команде предоставил код для подгонки регрессионных моделей. Вы планируете распараллелить этот код с помощью foreach(), %:% и %dopar%.

Общее количество столбцов для итерации сохранено в рабочем пространстве как ncols, количество строк — как nrows. Пакеты parallel, doParalel и foreach уже загружены. Кластер cl создан. Вам нужно написать вложенные циклы foreach().

Это упражнение является частью курса

Параллельное программирование на R

Посмотреть курс

Инструкции к упражнению

  • Зарегистрируйте кластер для использования в циклах foreach.
  • Задайте цикл foreach для итерации по столбцам от одного до ncols, соберите результаты с помощью "cbind" и используйте оператор вложения.
  • Задайте ещё один цикл foreach для итерации по строкам от одного до nrows, соберите результаты с помощью "c" и используйте оператор параллельного выполнения.
  • Остановите кластер после завершения всех вычислений.

Интерактивное практическое упражнение

Попробуйте выполнить это упражнение, дополнив этот пример кода.

# 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))))
Редактировать и запускать код