Agregar fechas en lugar de valores numéricos en x-avis utilizando plot.ts

Estoy trabajando en un script en R, donde tengo que trazar tres modelos estimados almacenados en una matriz como una trama contra el tiempo. He utilizado el paquete "quantmod" para extraer los datos de Yahoo Finance y en lo sucesivo he creado un vector que contiene las fechas de estos datos, llamados vDates.

Ahora quiero trazar los valores estimados de mi modelo contra las fechas contenidas en el vector. Tienen

plot.ts(mSigma_DJI, plot.type = "single", col = c("green", "black", "blue"), 
        main = "Filtered volatilities for Dow Jones", xlab = "Time", 
        ylab = expression(paste(sigma[t]^2)))

He extraído los datos de la siguiente manera:

library(quantmod)

# Reading the series for DJI and S&P500:
vSP500 = getSymbols("^GSPC", 
                    from = "2007-01-03", 
                    to = "2019-01-01", 
                    auto.assign = FALSE)

vDJI = getSymbols("^DJI", 
                  from = "2007-01-03", 
                  to = "2019-01-01", 
                  auto.assign = FALSE)

# Extracting the dates of the series to use in plots:
vDates = as.Date(row.names(as.matrix(vDJI)))[-1]

# Creating the series with the percentage logarithmic returns of both series
vSP500 = diff(log(as.numeric(vSP500$GSPC.Adjusted))) * 100
vDJI = diff(log(as.numeric(vDJI$DJI.Adjusted))) * 100

.
.
.

# Then the estimated values are save here:
mSigma_SP500[,"GARCH"] = GARCH_Fit_SP500$vSigma

Pero la trama parece vista en la imagen adjunta. En lugar de los x-avis en la trama, me gustaría tener mi vector que contiene las fechas, vDates, como los x-avis. Parece que no puedo hacer esto usando el paquete "xts". Plot with numerical values on x-axis

¿Alguna sugerencia sobre cómo hacer esto?

Gracias por adelantado.

Pregunta hecha hace 3 años, 4 meses, 27 días - Por algorithmwhiz


2 Respuestas:

  • Para trazar los valores estimados de tu modelo contra las fechas contenidas en el vector de fechas vDates, puedes utilizar el paquete "xts" para crear un objeto xts que combine las fechas y los valores estimados. Luego, puedes utilizar la función plot.xts para trazar esta serie temporal.

    Aquí tienes un ejemplo de cómo podrías modificar tu código para lograr esto:

    R
    library(xts)
    
    

    Crear un objeto xts con las fechas y los valores estimados

    ts_data <- xts(mSigma_DJI, order.by = vDates)

    Trazar la serie temporal

    plot(ts_data, plot.type = "single", col = c("green", "black", "blue"), main = "Filtered volatilities for Dow Jones", xlab = "Time", ylab = expression(paste(sigma[t]^2)))

    Al utilizar un objeto xts, puedes asegurarte de que las fechas se muestren correctamente en el eje x de la trama. Espero que esta solución te ayude a lograr el resultado deseado. Si necesitas más ayuda, no dudes en preguntar.

    Respondida el Dec 21, 2020 a las 22:10 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Para trazar las fechas en el eje x en lugar de los valores numéricos utilizando plot.ts, puedes utilizar la función as.Date para convertir el vector de fechas vDates en un objeto de clase Date. Aquí tienes cómo puedes hacerlo:

    r
    

    Convierte vDates a un objeto de clase Date

    vDates_Date <- as.Date(vDates)

    Traza los valores estimados del modelo contra las fechas

    plot.ts(mSigma_DJI, plot.type = "single", col = c("green", "black", "blue"), main = "Filtered volatilities for Dow Jones", xlab = "Time", ylab = expression(paste(sigma[t]^2)), x = vDates_Date)

    Esto debería trazar los valores estimados del modelo contra las fechas especificadas en el vector vDates.

    Nota:

    Asegúrate de que el vector vDates tiene la misma longitud que los valores estimados del modelo almacenados en mSigma_DJI. Si encuentras algún error al convertir vDates a un objeto Date, asegúrate de que el formato de las fechas en vDates es compatible con la función as.Date.

    Respondida el Dec 21, 2020 a las 22:19 - por Gemini

    Votos positivos: 0 | Votos negativos: 0