Retroceda uma série temporal para as verdades da Covid-19

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br

[ad_1]

[This article was first published on DataGeeek, and kindly contributed to R-bloggers]. (Você pode relatar problemas sobre o conteúdo desta página aqui)


Quer compartilhar seu conteúdo em R-bloggers? clique aqui se você tiver um blog, ou aqui se não tiver.

Há alguns meses, o Ministro da Saúde da Turquia anunciou que os casos positivos sem sinais de doença não foram incluídos nas estatísticas. Essa declaração causou um terremoto na Turquia e, infelizmente, os artigos sobre covid-19 que escrevi antes deram em nada.

A razão para esta declaração foi a pressão do prefeito metropolitano de Istambul. Ele disse que, de acordo com dados divulgados pela administração do cemitério, órgão municipal, o número diário de mortes de infectados era quase o dobro do número diário de mortos explicado pelo ministério.

Então, decidi verificar as alegações do prefeito. Para fazer isso, tenho que fazer algumas previsões; mas, não para o futuro, para o passado. Felizmente, existe um método para isso que é chamado Backcasting. Vamos pegar um vetor de série temporal {X_1,.  .  .  , X_n}

e estimativa

  • Estimativa de uma etapa para previsão, X_ {t + 1} ^ t =  phi_ {t, 1} X_t +.  .  .  +  phi_ {t, t} X_1 =  Phi ^ TX com X = (X_t,..., X_1)

Como você pode ver acima, os coeficientes de backcasting são iguais aos coeficientes de previsão ( Phi

) Por exemplo, neste caso, o modelo para novos casos é ARIMA (0, 1, 2) com deriva:

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br
  • Para previsão: X_t = c + X_ {t-1} +  epsilon_t +  theta_1  epsilon_ {t-1} +  theta_2  epsilon_ {t-2}
  • Para backcasting: X_t = c + X_ {t-1} +  epsilon_t +  theta_2  epsilon_ {t-1} +  theta_1  epsilon_ {t-2}
#Function to reverse the time series
reverse_ts % 
    rev() %>% 
    ts(start=tsp(y)[1L], frequency=frequency(y))
}

#Function to reverse the forecast
reverse_forecast % length()
  
  f % frequency()
  
  object[["x"]] % reverse_ts()
  
  object[["mean"]] % rev() %>% 
    ts(end=tsp(object[["x"]])[1L]-1/f, frequency=f)
  
  
  object[["lower"]] 


We would first reverse the time series and then make predictions and again reverse the forecast results. The data that we are going to model is the number of daily new cases and daily new deaths, between the day the health minister’s explanation was held and the day the vaccine process in Turkey has begun. We will try to predict the ten days before the date 26-11-2020.

#Creating datasets
df  "2020-11-25",]
#The data between 15-11-2020 and 26-11-2020:Test set 
df_before  "2020-11-15" & df$date % data.frame()
df_deaths % data.frame()

#Converting the numeric row names to date object
options(digits = 9)
date % 
  rownames() %>% 
  as.numeric() %>% 
  date_decimal() %>% 
  as.Date() 

#Adding date object created above to the data frames
df_cases % cbind(df_cases) %>% as.data.frame()
colnames(df_cases)[1] % cbind(df_deaths) %>% as.data.frame()
colnames(df_deaths)[1] %
  ts(start = c(2020, n),frequency = 365 )

ts_deaths %
  ts(start = c(2020, n),frequency = 365 )

#Backcast variables
ts_cases %>%
  reverse_ts() %>%
  auto.arima() %>%
  forecast(h=10) %>%
  reverse_forecast() -> bc_cases

ts_deaths %>%
  reverse_ts() %>%
  auto.arima() %>%
  forecast(h=10) %>%
  reverse_forecast() -> bc_deaths


Pode ser muito útil criar uma função para plotar a comparação de valores de backcast e dados observados.

#Plot function for comparison
plot_fun 


plot_fun(df_deaths, "new_deaths")

Conclusão

Quando examinamos o gráfico, a diferença no número de mortos parece relativamente próxima. No entanto, os níveis de casos diários são significativamente diferentes uns dos outros. Embora essa estimativa cubra apenas dez dias, ela sugere que há inconsistência nos números fornecidos.


Referências




[ad_2]

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br
Leia Também  Crie um gráfico de dispersão com ggplot