Tengo datos de frecuencia mensuales que estoy tratando de desglosar en datos de frecuencia diaria. Entonces uso el td
comando del tempdisagg
paquete en R usando el siguiente código:
dat=ts(data[,2])
result=td(dat~1, conversion = "average", to = "day", method = "chow-lin-maxlog")
Entonces recibo el siguiente mensaje de error:
Error in td(dat ~ 1, conversion = "average", to = "day", method = "chow-lin-maxlog") : 'to' argument: unknown character string
Los datos que uso dat
son los siguientes:
> dput(head(dat))
c(82.47703009, 84.63094431, 70.00659987, 78.81135651, 74.749746,82.95638213)
Entonces, aunque estos datos dat
están en frecuencia mensual, el inicio y el final aún no reflejan esto. De hecho, la fecha de inicio es 1/1997 y la fecha de finalización es 9/2019.
¿Puedo obtener ayuda para desglosar estos datos mensuales dat
en datos de frecuencia diaria, por favor?
dput(head(x))
odata.frame(...)
) directamente. ¡Gracias!dput(ts(head(1:50)))
, entonces consigostructure(1:6, .Tsp = c(1, 6, 1), class = "ts")
. Su imagen sugiere que sudat
es una serie temporal, pero suc(...)
no. ¿Son esos dosdat
s iguales?tempdisagg.pdf
, no puedo encontrar"daily"
ningún lugar, yto=
dice que admite "frecuencia de destino de alta frecuencia como una cadena de caracteres (" trimestral "o" mensual ") o como un escalar (por ejemplo, 2, 4, 7, 12)" . ¿Dónde se sugiere queto="daily"
sea compatible? Se puede tratarto=1
? (Realmente no puedo ayudar mucho más allá de eso. No conozco bien el paquete, pensé que podría ayudar genéricamente.)Respuestas:
Parece que el paquete tempdisagg no permite la desagregación mensual a diaria. Del
td()
archivo de ayuda 'a' argumento:Su mensaje de error "argumento 'a': cadena de caracteres desconocida" se debe a que el
to =
argumento solo acepta 'trimestralmente' o 'mensual' como cadenas.Aquí hay una discusión sobre la desagregación de datos mensuales en el stackstack de estadísticas aquí: /stats/258810/disaggregate-monthly-forecasts-into-daily-data
Después de algunas búsquedas, parece que nadie usa constantemente datos desagregados mensualmente a diario. El
tempdisagg
paquete parece ser capaz de lo que la mayoría de los demás han descubierto que es posible: anual a trimestral o mensual, y períodos de tiempo que son consistentes, incluso múltiples.Eric, he agregado un script a continuación que debería ilustrar lo que estás tratando de hacer, tal como lo entiendo.
Aquí usamos datos de precios reales para pasar de los precios diarios -> precios mensuales -> retornos mensuales -> retornos diarios promedio.
Aquí hay tres cuadros que muestran 1. retornos mensuales solamente, 2. promedio diario de retornos mensuales, 3. ambos juntos. Como son idénticos, el trazado excesivo en la tercera imagen muestra solo uno.
fuente
quantmod::monthlyReturn
uPerformanceAnalytics::Return.calculate
obtener las devoluciones (mensuales). A partir de ahí, si necesita asumir devoluciones diarias, puede usar el método anterior (comentario).