Tenho dados de frequência mensal que estou tentando desagregar em dados de frequência diária. Então, eu uso o td
comando do tempdisagg
pacote em R usando o código abaixo:
dat=ts(data[,2])
result=td(dat~1, conversion = "average", to = "day", method = "chow-lin-maxlog")
Então eu recebo a seguinte mensagem de erro:
Error in td(dat ~ 1, conversion = "average", to = "day", method = "chow-lin-maxlog") : 'to' argument: unknown character string
Os dados que eu uso dat
são os seguintes:
> dput(head(dat))
c(82.47703009, 84.63094431, 70.00659987, 78.81135651, 74.749746,82.95638213)
Portanto, embora esses dados dat
estejam em frequência mensal, o início e o fim ainda não refletem isso. De fato, a data de início é 1/1997 e a data de término é 9/2019.
Posso obter ajuda para desagregar esses dados mensais dat
em dados de frequência diária, por favor?
dput(head(x))
oudata.frame(...)
) diretamente. Obrigado!dput(ts(head(1:50)))
, entendostructure(1:6, .Tsp = c(1, 6, 1), class = "ts")
. Sua imagem sugere que vocêdat
é uma série temporal, mas a suac(...)
não. Esses doisdat
são iguais?tempdisagg.pdf
, não consigo encontrar"daily"
nenhum lugar eto=
diz que suporta "a frequência de destino de alta frequência como uma sequência de caracteres (" trimestral "ou" mensal ") ou como escalar (por exemplo, 2, 4, 7, 12)" . Onde é sugerido queto="daily"
é suportado? Você pode tentarto=1
? (Eu realmente não posso ajudar muito além do que eu não sei o pacote bem, pensei que eu poderia ajudar genericamente..)Respostas:
Parece que o pacote tempdisagg não permite a desagregação mensal ou diária. Do
td()
arquivo de ajuda 'para' argumento:Sua mensagem de erro "argumento 'to': seqüência de caracteres desconhecida" é porque o
to =
argumento aceita apenas 'trimestral' ou 'mensal' como seqüências de caracteres.Há alguma discussão sobre como desagregar dados mensais diariamente na pilha de estatísticas aqui: /stats/258810/disaggregate-monthly-forecasts-into-daily-data
Após algumas pesquisas, parece que ninguém usa consistentemente dados desagregados mensalmente e diariamente. O
tempdisagg
pacote parece ser capaz do que a maioria dos outros considerou possível - anual a trimestral ou mensal, e períodos consistentes até múltiplos.Eric, adicionei um script abaixo que deve ilustrar o que você está tentando fazer, como eu o entendo.
Aqui, usamos dados reais de preços para passar dos preços diários -> preços mensais -> retornos mensais -> retornos médios diários.
Aqui estão três gráficos mostrando 1. somente retornos mensais, 2. média diária dos retornos mensais, 3. ambos juntos. Como são idênticas, a plotagem na terceira imagem mostra apenas uma.
fonte
quantmod::monthlyReturn
ouPerformanceAnalytics::Return.calculate
obter as devoluções (mensais). A partir daí, se você precisar assumir retornos diários, poderá usar o método acima (comentário).