Entendendo a produtividade ou as despesas ao longo do tempo sem ser vítima de interrupções estocásticas


8

Me ajude aqui, por favor. Talvez antes mesmo de me dar uma resposta, você precise me ajudar a fazer a pergunta. Eu nunca aprendi sobre análise de séries temporais e não sei se é de fato o que eu preciso. Eu nunca aprendi sobre as médias suavizadas pelo tempo e não sei se é realmente isso que eu preciso. Meu histórico estatístico: tenho 12 créditos em bioestatística (regressão linear múltipla, regressão logística múltipla, análise de sobrevivência, anova multifatorial, mas nunca anote medidas repetidas).

Então, por favor, veja meus cenários abaixo. Quais são as palavras-chave que devo procurar e você pode sugerir um recurso para aprender o que preciso aprender?

Quero examinar vários conjuntos de dados diferentes para propósitos totalmente diferentes, mas comum a todos eles é que há datas como uma variável. Portanto, alguns exemplos vêm à mente: produtividade clínica ao longo do tempo (como em quantas cirurgias ou quantas visitas ao consultório) ou conta de energia elétrica ao longo do tempo (como em dinheiro pago à empresa de eletricidade por mês).

Nas duas situações acima, a maneira quase universal de fazer isso é criar uma planilha de mês ou trimestre em uma coluna e na outra coluna haveria algo como pagamento de eletricidade ou número de pacientes atendidos na clínica. No entanto, a contagem por mês gera muito barulho que não tem significado. Por exemplo, se eu normalmente pago a conta de eletricidade no dia 28 de cada mês, mas em uma ocasião eu esqueço e só a pago 5 dias depois no dia 3 do próximo mês, um mês aparecerá como se não houvesse despesas e o próximo mês mostrará despesas gigantescas. Como se tem as datas de pagamento reais, por que alguém descartaria propositadamente os dados muito granulares colocando-os em despesas por mês?

Da mesma forma, se eu estiver fora da cidade por 6 dias em uma conferência, esse mês parecerá muito improdutivo e se esses 6 dias caírem perto do final do mês, o próximo mês ficará incomumente ocupado, pois haverá uma lista de espera inteira de pessoas que queriam me ver, mas tiveram que esperar até eu voltar.

Então, é claro, existem as variações sazonais óbvias. Os aparelhos de ar condicionado usam muita eletricidade; portanto, é necessário ajustar o calor do verão. Bilhões de crianças são encaminhadas a mim por otite média aguda recorrente no inverno e quase nenhuma no verão e no início do outono. Nenhuma criança em idade escolar é programada para cirurgia eletiva nas primeiras 6 semanas em que as escolas retornam após as longas férias de verão. A sazonalidade é apenas uma variável independente que afeta a variável dependente. Deve haver outras variáveis ​​independentes, algumas das quais podem ser adivinhadas e outras que não são conhecidas.

Um monte de questões diferentes surgem quando se olha para a inscrição em um estudo clínico de longa data.

Que ramo das estatísticas nos permite analisar isso ao longo do tempo, simplesmente observando os eventos e suas datas reais, mas sem criar caixas artificiais (meses / trimestres / anos) que realmente não existem.

Pensei em fazer a média ponderada contar para qualquer evento. Por exemplo, o número de pacientes atendidos nesta semana é igual a 0,5 * n atendido nesta semana + 0,25 * n atendido na semana passada + 0,25 * n atendido na próxima semana.

Eu quero aprender mais sobre isso. Quais chavões devo procurar?


1
Dica: ser mais conciso provavelmente o ajudará a obter uma resposta.

1
Eu concordo completamente com você. Minha pergunta é longa e divagar, mas esse é o meu problema. Eu realmente não sei qual é a minha pergunta. Pode me ajudar?
Farrel

pergunta muito boa (de alguma forma eu acabei de ver). +1.
user603

Respostas:


1

Eu começaria com filtros robustos de séries temporais (medianas que variam de tempo), porque são mais simples e intuitivos.

Basicamente, o filtro de tempo robusto é para séries temporais suavizar o que a mediana é a média; um resumo mede (neste caso, um tempo que varia um) que não é sensível a observações "com fio", desde que não representem a maioria dos dados. Para um resumo, veja aqui .

Se você precisar de smoothers mais sofisticados (por exemplo, não lineares), poderá usar a filtragem robusta de Kalman (embora isso exija um nível um pouco mais alto de sofisticação matemática)

Este documento contém o seguinte exemplo (um código a ser executado em R , o software estatístico de código aberto):

library(robfilter)
data(Nile)
nile <- as.numeric(Nile)
obj <- wrm.filter(nile, width=11)
plot(obj)

em que a série temporal original está em preto e a versão filtrada (filtrada por mediana repetida) é colocada em excesso em vermelho. Os últimos documentos contêm um grande número de referências a papéis e livros. Outros tipos de filtros são implementados no pacote, mas a mediana repetida é muito simples.


você tem um URL para o qual possa me apontar? Eu nunca fiz uma análise de séries temporais na minha vida. Mas parece que é isso que eu preciso me ensinar. Existe um exemplo que eu possa usar que use filtros de séries temporais?
Farrel

@farel:> se você clicar nas palavras azuis, será direcionado para sites reais. O último documento, em particular, contém exemplos de exercícios (repetidos na versão editada do meu post).
user603

1

Uma solução simples que não requer a aquisição de conhecimento especializado é usar gráficos de controle . Eles são ridiculamente fáceis de criar e facilitam distinguir variações de causas especiais (como quando você está fora da cidade) a partir de variações de causas comuns (como quando você tem um mês de baixa produtividade), que parece ser do tipo das informações que você deseja.

Eles também preservam os dados. Como você diz que usará os gráficos para muitos propósitos diferentes, desaconselho a realização de transformações nos dados.

Aqui está uma introdução suave . Se você decidir que gosta de gráficos de controle, pode se aprofundar no assunto. Os benefícios para o seu negócio serão enormes. Acredita-se que os gráficos de controle tenham contribuído muito para o boom econômico japonês do pós-guerra .

Há até mesmo um pacote de R .


1

ΔtttΔtt

editar:

tixixif(t)xitf(t)t

t

yiy

w(t)w(t)0tw(0)=1w(t)0hti,xi

f(t)=i=1nxiw(|tti|/h).
w(t)
  • w(t)=1t10
  • w(t)=max(0,1t)
  • um núcleo quadrático: ;w(t)=max(0,1t2)
  • um núcleo de tricube: ;w(t)=max(0,(1t2)3)
  • um kernel gaussiano: ;w(t)=exp(t2/2)

Eu chamo esses núcleos, mas eles são desativados por um fator constante aqui e ali; veja também uma lista abrangente de kernels .

Alguns exemplos de código no Matlab:

%%kernels
ker0 = @(t)(max(0,ceil(1-t))); %uniform
ker1 = @(t)(max(0,1-t)); %triangular
ker2 = @(t)(max(0,1-t.^2)); %quadratic
ker3 = @(t)(max(0,(1-t.^2).^3)); %tricube
ker4 = @(t)(exp(-0.5 * t.^2)); %Gaussian

%%compute f(t) given x_i,t_i,kernel,h
ff = @(x_i,t_i,t,kerf,h)(sum(x_i .* kerf(abs(t - t_i) / h)));

%%some sample data: irregular electric bills
sdata = [
datenum(2009,12,30),141.73;...
datenum(2010,01,25),100.45;...
datenum(2010,02,23),98.34;...
datenum(2010,03,30),83.92;...
datenum(2010,05,01),56.21;...       %late this month;
datenum(2010,05,22),47.33;...       
datenum(2010,06,14),62.84;...       
datenum(2010,07,30),83.34;...       
datenum(2010,09,10),93.34;...       %really late this month
datenum(2010,09,22),78.34;...
datenum(2010,10,22),93.25;...
datenum(2010,11,14),83.39;...       %early this month;
datenum(2010,12,30),133.82];

%%some irregular observation times at which to sample the filtered version;
t_obs  = sort(datenum(2009,12,01) + 400 * rand(1,400));

t_i = sdata(:,1);x_i = sdata(:,2);

%%compute f(t) for each of the kernel functions;
h   = 60;    %bandwidth of 60 days;

fx0 = arrayfun(@(t)(ff(x_i,t_i,t,ker0,h)),t_obs);
fx1 = arrayfun(@(t)(ff(x_i,t_i,t,ker1,h)),t_obs);
fx2 = arrayfun(@(t)(ff(x_i,t_i,t,ker2,h)),t_obs);
fx3 = arrayfun(@(t)(ff(x_i,t_i,t,ker3,h)),t_obs);
fx4 = arrayfun(@(t)(ff(x_i,t_i,t,ker4,0.5*h)),t_obs);   %!!use smaller bandwidth

%%plot them;
lhand = plot(t_i,x_i,'--rs',t_obs,fx0,'m-+',t_obs,fx1,'b-+',t_obs,fx2,'k-+',...
t_obs,fx3,'g-+',t_obs,fx4,'c-+');
set(lhand(1),'MarkerSize',12);
set(lhand(2:end),'MarkerSize',4);
datetick(gca());
legend(lhand,{'data','uniform','triangular','quadratic','tricube','gaussian'});

O gráfico mostra o uso de alguns núcleos em alguns dados de fatura elétrica de amostra. texto alternativo

Observe que o kernel uniforme está sujeito aos 'choques estocásticos' que o OP está tentando evitar. Os núcleos tricube e gaussiano oferecem aproximações muito mais suaves. Se essa abordagem for aceitável, é preciso escolher apenas o kernel e a largura de banda (em geral, esse é um problema difícil, mas, dado algum conhecimento de domínio e alguns loops de código-teste-recodificação, não deve ser muito difícil).


Shabbychef:> Acho que Farrel mencionou especificamente um argumento contra essa abordagem em sua pergunta.
user603

A questão é um tanto ambígua; minha opinião foi que o OP estava procurando por 'chavões'.
shabbychef

Pesquisei no Google Boxcar com base no tempo e descobri muito pouco. Você pode nos indicar um exemplo trabalhado?
Farrel

1

Palavras-chave: interpolação, reamostragem, suavização.

Seu problema é semelhante ao encontrado frequentemente na demografia: as pessoas podem ter contagens de censo divididas em intervalos de idade, por exemplo, e esses intervalos nem sempre são de largura constante. Você deseja interpolar a distribuição por idade. O que isso compartilha com o seu problema, além da largura variável (= intervalos de tempo variáveis), é que os dados tendem a não ser negativos. Além disso, muitos desses conjuntos de dados podem ter ruído, mas têm uma forma específica de correlação negativa: uma contagem que aparece em uma bandeja não aparecerá nas caixas vizinhas, mas pode ter sido atribuída à bandeja errada. Por exemplo, as pessoas mais velhas tendem a arredondar suas idades para os cinco anos mais próximos. Eles não são esquecidos, mas podem contribuir para a faixa etária errada. De modo geral, porém, os dados são completos e confiáveis. Em termos dessa analogia, estamos falando de um censo completo; em seus conjuntos de dados, você tem contas de luz reais, matrículas reais e assim por diante. Portanto, é apenas uma questão de distribuir os dados razoavelmente para um conjunto de intervalos úteis para análises adicionais (como tempos igualmente espaçados para análise de séries temporais): é aí que estão envolvidos a interpolação e a reamostragem.

Existem muitas técnicas de interpolação. Os mais comuns em demografia foram desenvolvidos para cálculos simples e são baseados em splines polinomiais. Muitos compartilham um truque que vale a pena conhecer, independentemente de como você planeja processar seus dados: não tente interpolar os dados brutos; em vez disso, interpole sua soma cumulativa. Este último aumentará monotonicamente devido à não negatividade dos valores originais e, portanto, tenderá a ser relativamente suave. É por isso que as splines polinomiais podem funcionar. Outra vantagem dessa abordagem é que, embora o ajuste possa se desviar dos pontos de dados (um pouco, espera-se), no geral ele reproduz corretamente os totais, para que nada seja perdido ou ganho. Obviamente, depois de ajustar os valores cumulativos (em função do tempo ou da idade), você faz as primeiras diferenças para estimar os totais em qualquer posição que desejar.

O exemplo mais simples dessa abordagem é um spline linear: basta conectar pontos sucessivos no gráfico de cumulativo cumulativo por segmentos de linha. Estime as contagens em qualquer intervalo de tempo lendo os valores e da curva estriada em e respectivamente e usando . Às vezes, splines melhores (cúbicos em algumas áreas; quintic em muitos aplicativos demográficos) melhoram as estimativas. Isso é equivalente à sua intuição de ponderar os dados e fornece uma boa interpretação gráfica.t [ t 0 , t 1 ] x 0 x 1 t 0 t 1 x 1 - x 0xt[t0,t1]x0x1t0t1x1x0


Parece interessante. Você conhece uma implementação simples do R?
Farrel

Caro @whuber, eu realmente quero implementar isso em R, então eu postei uma pergunta no stackoverflow. Você pode estar interessado. Se você usar RI te amaria para respondê-la de outra maneira você pode apenas querer sentar e whatch
Farrel
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.