Como mesclar dados mensais, diários e semanais?

11

O Google Trends retorna dados semanais, portanto, preciso encontrar uma maneira de mesclá-los com meus dados diários / mensais.

O que fiz até agora é dividir cada série em dados diários, por exemplo:

a partir de:

2013-03-03 - 2013-03-09 37

para:

2013-03-03 37 2013-03-04 37 2013-03-05 37 2013-03-06 37 2013-03-07 37 2013-03-08 37 2013-03-09 37

Mas isso está adicionando muita complexidade ao meu problema. Eu estava tentando prever pesquisas no Google nos últimos 6 meses, ou 6 valores nos dados mensais. Os dados diários implicariam um trabalho com 180 valores passados. (Eu tenho 10 anos de dados, 120 pontos em dados mensais / 500+ em dados semanais / 3500+ em dados diários)

A outra abordagem seria "mesclar" dados diários em dados semanais / mensais. Mas algumas questões surgem desse processo. Alguns dados podem ser calculados como média porque sua soma representa algo. Chuva, por exemplo, a quantidade de chuva em uma determinada semana será a soma dos valores para cada dia que compõe as semanas.

No meu caso, estou lidando com preços, taxas financeiras e outras coisas. Para os preços, é comum no meu campo levar em consideração o volume trocado, portanto os dados semanais seriam uma média ponderada. Para as taxas financeiras, é um pouco mais complexo: algumas fórmulas estão envolvidas para criar taxas semanais a partir das taxas diárias. Para as outras coisas, não conheço as propriedades subjacentes. Eu acho que essas propriedades são importantes para evitar indicadores sem sentido (uma média das taxas de financiamento seria um absurdo, por exemplo).

Então, três perguntas:

Para propriedades conhecidas e desconhecidas, como devo proceder para passar de dados diários para semanais / mensais?

Sinto que a quebra de dados semanais / mensais em dados diários, como fiz, está um pouco errada, porque estou introduzindo quantidades que não fazem sentido na vida real. Então, quase a mesma pergunta:

Para propriedades conhecidas e desconhecidas, como devo proceder para ir de dados semanais / mensais para dados diários?

Por último, mas não menos importante: quando são fornecidas duas séries temporais com etapas diferentes, o que é melhor: usar a etapa mais baixa ou a maior? Penso que este é um compromisso entre o número de dados e a complexidade do modelo, mas não vejo nenhum argumento forte para escolher entre essas opções.

Edit: se você conhece uma ferramenta (em R Python e até Excel) para fazer isso facilmente, seria muito apreciada.

lcrmorin
fonte
para python, a ferramenta padrão são os pandas. Foi projetado especificamente para lidar com séries temporais de dados financeiros. pandas timeseries
seanv507
Gostaria de expandir um pouco o que você quer dizer com "propriedade desconhecida"?
TheGrimmScientist

Respostas:

8

quando são fornecidas duas séries temporais com etapas diferentes, o que é melhor: usar a etapa mais baixa ou a maior?

Para a análise das séries temporais, você deve fazer as duas coisas: obter a granularidade mais alta possível com o conjunto de dados diário e também repetir a análise com o conjunto de dados mensal. Com o conjunto de dados mensal, você tem 120 pontos de dados, o que é suficiente para obter um modelo de séries temporais, mesmo com a sazonalidade em seus dados.

Para propriedades conhecidas e desconhecidas, como devo proceder para passar de dados diários para semanais / mensais?

Para obter dados semanais ou mensais dos dados diários, você pode usar as funções de suavização. Para dados financeiros, você pode usar a suavização de média móvel ou exponencial, mas se elas não funcionarem para seus dados, poderá usar a função de suavização de spline "smooth.spline" em R: https://stat.ethz.ch/R -manual / remendado / biblioteca / stats / html / smooth.spline.html

O modelo retornado terá menos ruído que o conjunto de dados diário original e você poderá obter valores para os pontos de tempo desejados. Por fim, esses pontos de dados podem ser usados ​​em sua análise de séries temporais.

Para propriedades conhecidas e desconhecidas, como devo proceder para ir de dados semanais / mensais para dados diários?

Para obter dados diários quando você tiver dados mensais ou semanais, você pode usar a interpolação. Primeiro, você deve encontrar uma equação para descrever os dados. Para fazer isso, você deve plotar os dados (por exemplo, preço ao longo do tempo). Quando fatores são conhecidos por você, essa equação deve ser influenciada por esses fatores. Quando os fatores são desconhecidos, você pode usar uma equação de melhor ajuste. O mais simples seria uma função linear ou uma função linear por partes, mas para dados financeiros isso não funcionará bem. Nesse caso, você deve considerar a interpolação de splines cúbicos por partes. Este link entra em mais detalhes sobre possíveis funções de interpolação: http://people.math.gatech.edu/~meyer/MA6635/chap2.pdf .

Em R, existe um método para interpolação de dados de séries temporais. Aqui você criaria um vetor com digamos valores semanais e NAs nas lacunas dos valores diários e, em seguida, usaria a função "interpNA" para obter os valores interpolados para os NAs. No entanto, essa função usa a função "approx" para obter os valores interpolados, que aplicam uma interpolação linear ou constante. Para executar a interpolação de spline cúbico em R, você deve usar a função "splinefun".

Algo a ter em atenção é que os modelos de séries temporais geralmente fazem algum tipo de média para prever valores futuros, quer você esteja observando métodos de suavização exponencial ou de média móvel integrada auto-regressiva integrada (ARIMA), entre outros. Portanto, um modelo de série temporal para prever valores diários pode não ser a melhor opção, mas os modelos semanais ou mensais podem ser melhores.

gchaks
fonte
Parece ser uma resposta prática. Não tenho certeza se isso é aplicável a séries temporais financeiras devido a arbitragem.
Lcrmorin
Eu acho que as respostas para suas perguntas ainda são válidas. Para o modelo de séries temporais, convém consultar os modelos ARCH (AutoRegressive Condicional Heteroskedasticity).
gchaks
ao interpolar usando, por exemplo, spline cúbico, em séries temporais financeiras, você não introduziria um viés de previsão? Eu acho que isso pode ser particularmente importante se estiver implementando um modelo de aprendizado de máquina?
tsando
5

Não sou especialista nesta área, mas acredito que sua pergunta esteja relacionada à agregação e desagregação de séries temporais . Se for esse o caso, aqui estão alguns recursos esperançosamente relevantes, que podem ser úteis para resolver seu problema (os cinco primeiros itens são principais, mas representativos e os dois últimos são complementares):

Aleksandr Blekh
fonte
2

Esta não será uma resposta muito satisfatória, mas aqui está minha opinião ...

Para propriedades conhecidas e desconhecidas, como devo proceder para passar de dados diários para semanais / mensais?

Para propriedades conhecidas e desconhecidas, como devo proceder para ir de dados semanais / mensais para dados diários?

A mesma resposta para ambos: você não pode fazer isso para propriedades desconhecidas e, para propriedades conhecidas, isso dependerá de como os valores foram calculados.

Como você aludiu a:

(uma média de taxas financeiras não faria sentido, por exemplo)

Não há uma transformação única que será apropriada em todos os casos, se as propriedades / valores são conhecidos ou desconhecidos. Mesmo com propriedades conhecidas, você provavelmente precisará de uma transformação exclusiva para cada tipo: média, mediana, modo, min, max, booleano etc.

quando são fornecidas duas séries temporais com etapas diferentes, o que é melhor: usar a etapa mais baixa ou a maior?

Sempre que possível, tente preservar a granularidade total da menor etapa possível. Supondo que você saiba como transformar os valores, sempre pode acumular as etapas (por exemplo, dia para mês, mês para ano) ... mas você não poderá necessariamente reconstruir etapas menores de etapas maiores após uma conversão com perdas .

Charlie Greenbacker
fonte
2

Para propriedades conhecidas e desconhecidas, como devo proceder para passar de dados diários para semanais / mensais?

Agregação.

Por exemplo, você tem o número de vezes que as pessoas pesquisaram 'widgets' todos os dias. Adicione os totais diários de um mês para obter totais mensais. Eu precisaria ver mais detalhes sobre os dados reais coletados em cada granularidade para fornecer uma versão mais completa.

Para propriedades conhecidas e desconhecidas, como devo proceder para ir de dados semanais / mensais para dados diários?

Você não pode.

Na física, uma ideia comparável é a frequência de Nyquist . A ideia geral é que você não pode adicionar mais informações do que as que você já tem em seus dados sem trazer mais dados. Dado apenas o dia em que alguém executou uma consulta, como você pode saber a que hora do dia essa consulta foi executada? Você pode fazer algumas inferências, mas a única maneira de responder à pergunta é trazer direta ou indiretamente mais informações ao sistema. Há coisas que você pode fazer para fazer suposições informadas no estado diário das variáveis ​​mensais (como mencionaram gchaks, interpolação), mas seus dados ainda são fundamentalmente dados mensais estendidos para serem visualizados diariamente.

Quando são fornecidas duas séries temporais com etapas diferentes, o que é melhor: usar a etapa mais baixa ou a maior?

Isso depende totalmente do que você está tentando responder.

A granularidade menor será mais sensível ao ruído e outras anomalias. A granularidade da cerveja será capaz de responder às perguntas com mais confiança, mas perde parte de sua utilidade. Por exemplo, se você está tentando ver quando as pessoas começam a procurar locais para os fins de semana para saber quando lançar campanhas de marketing para uma nova boate, convém observar os dados diários, se não menores. Se você estiver olhando para as tendências gerais das boates para descobrir em quem deseja investir, provavelmente mensalmente será melhor.

TheGrimmScientist
fonte
2

A capacidade de agregar dados com base em segmentos de data é uma tarefa fácil, usando o software Tableau. Basta inserir os dados na ferramenta e arrastar e soltar as dimensões da métrica e da data no espaço do corpo do relatório. O Tableau instantaneamente aprimora as visualizações agregadas e / ou as tabelas de dados detalhados rapidamente. Você pode agrupar / somar por ano, trimestre, mês, semana, dia, hora etc. (funcionalidade padrão, incorporada e pronta para uso oferecida pela ferramenta)

Além disso, se você quiser incorporar dados adicionais posteriormente (o que eu suponho ser o que você quis dizer com 'propriedades desconhecidas'), você pode importar outro conjunto de dados e anexá-lo facilmente ao primeiro, desde que ele também ofereça datas.

Eu recomendaria verificar a versão gratuita, que acredito ser chamada de Tableau Public.

Deepraj Kunnath
fonte