es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo mejorar el tiempo de procesamiento de la computación de ventana móvil grande

Tengo un conjunto de datos grande, que incluye aproximadamente 100,000 entradas. Estoy usando el paquete tibbletime para crear una versión móvil de la función DL.test del paquete vrtest.

Estoy usando una ventana móvil (tamaño=1000), lo que resulta en aproximadamente 99,000 cálculos. El código se ve así:

#instalando paquetes
install.packages(“tibbletime”)
install.packages(“vrtest”)

#importando librerías
library(vrtest)
library(dplyr)
library(tibbletime)
library(tibble)

#generando datos de demostración
data <- data.frame(replicate(1,sample(0:1,1010,rep=TRUE)))
names(data)[names(data) == “replicate.1..sample.0.1..1010..rep…TRUE..”] <- “log_return”

#ejecutando DL.test una vez
DL.test(data, 300, 1)

#creando una versión móvil de DL.test
test <- rollify(DL.test, window=1000, unlist=FALSE)

#aplicando la función y guardando los resultados
results <- dplyr::mutate(data, test = test(log_return))

El problema ahora es que ejecutar DL.test incluso una vez toma un poco menos de 5 minutos en mi configuración actual. Tener que repetir este paso casi 100,000 veces limita bastante la practicidad.

¿Qué opciones tengo para acelerar este proceso?

Mi idea actual sería crear muchas versiones más pequeñas de mi conjunto de datos original (por ejemplo, entradas 1 – 1500 para los primeros 500 cálculos, 501 – 2000 para el segundo grupo…) y de alguna manera utilizar el procesamiento en paralelo.

¡Cualquier consejo es muy apreciado!

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Como experto en tecnología de la información especializado en R, rendimiento, procesamiento paralelo y cálculo acumulativo, existen varias opciones que puedes considerar para acelerar el proceso de aplicar la versión de ventana móvil de DL.test a tu conjunto de datos grande.

    1. Procesamiento paralelo: Puedes utilizar el procesamiento paralelo para distribuir el cálculo en múltiples núcleos de tu computadora o clúster. Esto puede reducir significativamente el tiempo de cálculo. Puedes usar el paquete foreach en R para lograr el procesamiento paralelo.
    2. Utilizar data.table en lugar de tibble: data.table es un paquete de alto rendimiento en R que puede manejar conjuntos de datos grandes de manera eficiente. Puedes convertir tu data.frame en un data.table y utilizar la función rollapply del paquete zoo para aplicar la versión de ventana móvil de DL.test.

    3. Reducir el tamaño de la ventana móvil: En lugar de utilizar un tamaño de ventana móvil de 1000, puedes intentar reducirlo a 500 o 250. Esto resultará en menos cálculos y reducirá el tiempo de cálculo.

    4. Utilizar un servidor o un servicio basado en la nube: Si tu computadora carece de la capacidad de procesamiento necesaria para manejar el conjunto de datos grande, puedes considerar utilizar un servidor o un servicio basado en la nube para realizar el cálculo. Servicios como Amazon Web Services (AWS) o Microsoft Azure proporcionan recursos informáticos basados en la nube que puedes aprovechar para acelerar tus cálculos.

    En general, estas son algunas opciones a considerar para acelerar el proceso de aplicar la versión de ventana móvil de DL.test a tu conjunto de datos grande.

Comments are closed.