Bucles foreach anidados para tendencias de precios
El mercado de valores es bien conocido por su comportamiento impredecible. Trabajas para una empresa de inversiones y tu jefe quiere ver las tendencias de las cotizaciones bursátiles en una ventana de una semana.
Has adquirido los datos de los precios diarios de las acciones de diez empresas tecnológicas desde 2015. El científico de datos de tu equipo ha proporcionado código para ajustar modelos de regresión. Piensas paralelizar este código utilizando foreach(), %:%, y%dopar%.
El número total de columnas sobre las que iterar se guarda en tu espacio de trabajo como ncols, y el número de filas como nrows. parallel Los paquetes doParalel y foreach se han cargado para ti. Se ha creado el clúster cl. Tienes que escribir los bucles anidados foreach().
Este ejercicio forma parte del curso
Programación paralela en R
Instrucciones del ejercicio
- Registra el clúster para utilizarlo con los bucles
foreach. - Especifica un bucle foreach para iterar sobre las columnas uno a
ncols, recoge los resultados con"cbind", y utiliza el operador de anidamiento. - Especifica otro bucle foreach para iterar sobre las filas uno a
nrows, recoge los resultados con"c", y utiliza el operador do-paralelo. - Detén el clúster cuando hayan finalizado todos los cálculos.
ejercicio interactivo práctico
Prueba este ejercicio completando este código de ejemplo.
# 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))))