Incidência de COVID-19 no Texas após o ajuste para a positividade do teste por @ ellis2013nz

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


Em meio a polêmica em vários (talvez muitos?) Países sobre o momento e o ritmo de abertura das medidas de controle do COVID-19, um pequeno canto do argumento hoje está relacionado ao motivo pelo qual o Texas está vendo números recordes de novos casos de COVID-19 nos dias atuais após várias medidas de abertura. Em um tópico no Twitter, @SeanTrende argumentou que a tendência preocupante se deve ao grande aumento no número de testes COVID-19. As autoridades do Texas não devem ser punidas ao executar mais testes que mostram mais casos.

Este é o caso de uso ideal para o meu ajuste à positividade do teste proposto na postagem da semana passada.

Aqui está um gráfico das tendências nos casos COVID-19 no Texas, com e sem ser ajustado por um multiplicador da raiz quadrada da taxa de positividade do teste. A escala vertical foi removida porque não temos como traduzir a linha ajustada vermelha em números reais de casos. Para este gráfico, converti as duas linhas em índices que se reúnem no final do período por design. Uma boa estimativa dos números absolutos reais de casos, permitindo que eu coloque a escala de volta no eixo vertical, certamente envolveria a linha vermelha sendo deslocada para cima por algum multiplicador adicional e desconhecido. Então, vamos nos concentrar nas tendências.

Eu usei uma versão otimizada da taxa de positividade do teste após modelá-la com um modelo aditivo generalizado, para lidar com problemas de dados relacionados aos números de teste; e médias móveis de sete dias de ambas as séries para lidar com a “sazonalidade” semanal dos dados. O código está na parte inferior da postagem.

Leia Também  3 livros recomendados sobre aprendizagem R

Podemos ver que @SeanTrende é pelo menos parcialmente justificado. Se você ajustar os casos confirmados por dia dessa maneira, os valores mais recentes, embora preocupantes, não serão “registros” que excederão o ponto alto em meados de abril.

Mas eles ainda estão subindo, o que significa que os casos de COVID-19 parecem estar se acelerando no Texas, mesmo quando levamos em conta o maior número de testes realizados.

Para que essa linha vermelha seja nivelada, é necessário usar a versão mais maximalista possível do ajuste e multiplicar o número de casos pela taxa de positividade do teste (e não pela raiz quadrada). Isso seria equivalente a tratar as pessoas que estão sendo testadas como uma amostra aleatória representativa da população geral do Texas (não fazendo a auto-seleção para pessoas mais doentes), o que não é plausível.

Segue um gráfico semelhante para os 12 estados dos EUA com mais casos de COVID-19:

Existem alguns padrões interessantes lá. Estou bastante satisfeito com o fato de os valores ajustados serem imagens mais precisas das tendências de incidência nesses estados do que os números de casos originais.

O código R para fazer isso está abaixo. Comentários bem-vindos.

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br
library(tidyverse)
library(scales)
library(janitor)
library(ggseas)
library(mgcv)

#------------------Data import and tidying------------

states_orig  read_csv("https://covidtracking.com/api/v1/states/daily.csv") 
states_info  read_csv("https://covidtracking.com/api/v1/states/info.csv")

states  states_orig %>%
  mutate(date = as.Date(as.character(date), format = "%Y%m%d")) %>%
  clean_names() %>%
  # force total number of tests to be at least as many as the number of positives:
  mutate(total_test_results_increase = pmax(positive_increase, total_test_results_increase)) %>%
  mutate(pos_rate = positive_increase / total_test_results_increase) %>%
  arrange(date) %>%
  mutate(date_n = as.numeric(date))  %>%
  left_join(select(states_info, state, state_name = name), by = "state")

# Just the 12 biggest states
states12  states %>%
  group_by(state) %>%
  summarise(max_pos = max(positive)) %>%
  arrange(desc(max_pos)) %>%
  slice(1:12) %>%
  inner_join(states, by = "state") %>%
  # state has to be a factor for use in mgcv::gam:
  mutate(state_name = fct_reorder(state_name, positive, .fun = sum)) %>%
  arrange(date) %>%
  ungroup()

#-----------------Smooth the positive test rates-----------
mod  gam(pos_rate ~ state_name + s(date_n, by = state_name), 
           data = states12, 
           family = quasibinomial,
           weights = total_test_results_increase)

states12$pos_rate_smoothed  predict(mod, newdata = states12, type = "response")

d  states12 %>%
  mutate(adj_pos = positive_increase * sqrt(pos_rate_smoothed)) %>%
  select(date, state_name, positive_increase, adj_pos) %>%
  gather(variable, value, -date, -state_name) %>%
  mutate(variable = if_else(variable == "adj_pos",
                            true = "Adjusted for test positivity rate",
                            false = "Original")) %>%
  group_by(state_name, variable) %>%
  arrange(date) %>%
  mutate(value = value / value[n()] * 100)

#-----------------Common themes and labels-------

the_theme  theme(axis.text.y = element_blank(),
      panel.grid.major.x = element_blank(),
      panel.grid.minor.x = element_blank(),
      panel.grid.minor.y = element_blank())

the_labs  labs(x = "", 
                 colour = "", 
                 y = "New daily confirmed cases",
                 caption = "Source: data from covidtracking.com, positivity adjustment by http://freerangestats.info")
                 
#------------------------Plots---------------------

# Top 12 states
d %>%
  ggplot(aes(x = date, y = value, colour = variable)) +
  facet_wrap(~state_name, scale = "free_y")  +
  stat_rollapplyr(index.ref = 60, width = 7) +
  the_theme +
  the_labs +
  scale_colour_brewer(palette = "Set1") +
  ggtitle("Trends in daily COVID-19 cases (rolling seven-day average, scale-free index)",
          "With and without adjustment for proportion of tests that return positives, suggesting relatively more unknown cases in March and April.")
  
# Texas:
d %>%
  filter(state_name == "Texas") %>%
  ggplot(aes(x = date, y = value, colour = variable)) +
  stat_rollapplyr(index.ref = 70, width = 7) +
  the_theme +
  the_labs +
  scale_colour_brewer(palette = "Set1") +
  ggtitle("Trends in daily COVID-19 cases in Texas (rolling seven-day average, scale-free index)",
          "After adjustment for test-positivity, new cases are still accelerating.")

Aqui está o tópico do Twitter que me levou a escrever esta postagem:

Leia Também  Big Data 7: valsas de yorks com Apache NiFi


Se você chegou até aqui, por que não inscreva-se para atualizações do site? Escolha o seu sabor: e-mail, twitter, RSS ou facebook …



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