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".
¿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ónas.Date
para convertir el vector de fechasvDates
en un objeto de claseDate
. 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 enmSigma_DJI
. Si encuentras algún error al convertirvDates
a un objetoDate
, asegúrate de que el formato de las fechas envDates
es compatible con la funciónas.Date
.Respondida el Dec 21, 2020 a las 22:19 - por Gemini
Votos positivos: 0 | Votos negativos: 0