Covid-19: e se deixássemos a doença tomar o seu curso?

By | Dicas de R

Na terça-feira, publiquei o nosso comentário de conjuntura semanal com um modelo SIR ajustado aos dados do Brasil. Para quem quiser replicar, todos os códigos de R foram disponibilizados, de modo que o post é totalmente reprodutível. Já aqui, quero apresentar as curvas geradas pelo modelo, considerando um horizonte de 90 dias.

O modelo divide a população em compartimentos, como ilustra a figura a seguir.

As pessoas são suscetíveis à doença, depois infectadas e, por fim, recuperadas. Ao deixar a doença tomar seu curso, sem fazer nada a respeito, o total de infectados atingiria seu pico no início de maio, se reduzindo ao longo das semanas seguintes. O número do pico fica pouco abaixo de 24 milhões de pessoas, com todas as consequências conhecidas sobre o sistema de saúde.

Como o país está tomando medidas de distanciamento social, o pico de infectados deve ocorrer antes disso, em meados de abril e com um número menor.

(*) Aprenda a rodar modelos como esse ao aprender R em nossos Cursos Aplicados de R.

___________


Turmas de Outono: 1º lote fecha dia 31/03!

By | Cursos da Análise Macro

Últimas Vagas disponíveis para o 1º lote, com 30% de desconto, das Turmas de Outono dos nossos Cursos Aplicados de R. Fecharemos o 1º lote às 23h59 do próximo dia 31/03. Há vagas para 15 Cursos Livres e 3 Formações. As turmas de Outono terão início no dia 13/04 e contão com Nivelamento em R, de modo que não é necessário nenhum conhecimento prévio na linguagem. Para todos os detalhes sobre as Turmas de Outono, continue lendo esse informativo...

Abrimos vagas para as cinco áreas dos nossos Cursos Livres: Data Science, Macroeconomia Aplicada, Econometria, Finanças e Central Banking. Haverá vagas para 15 Cursos, a saber:

Cursos de Data Science

Macroeconomia Aplicada

Cursos de Econometria

Cursos de Finanças

Cursos de Central Banking

Além disso, também abrimos as inscrições para as nossas Formações:

Importante dizer que, para manter o nosso suporte aos alunos funcionando de forma plena, as inscrições serão abertas em lotes. No primeiro lote, daremos desconto de 30% apenas para os primeiros alunos inscritos. Tão logo o primeiro lote atinja o limite de alunos, nós fecharemos ele e passaremos para o segundo lote com as vagas restantes, mas com o preço cheio. As inscrições no primeiro lote costumam acabar rápido, então garanta o quanto antes a sua inscrição!

Planos Disponíveis

Em relação aos planos disponíveis, para os cursos de Análise de Conjuntura, Introdução ao R para Análise de Dados, Macroeconometria II, Microeconometria, Machine Learning, Política Monetária, Modelos do Banco Central e para as Formações, será ofertado um Plano Único com acesso por 12 meses, suporte customizado do professor e acesso ao Clube do Código também por 12 meses. Os preços variarão de acordo com a complexidade de cada Curso. Nosso objetivo com isso é dar um treinamento totalmente customizado para os alunos inscritos. Para os demais Cursos, ofereceremos um plano básico e um plano premium. O plano básico dá acesso apenas ao material do curso até 30/07. Já o Plano Premium concede todas as regalias listadas anteriormente no plano único.

Investimento

Os preços dos Cursos variam de acordo com a complexidade do conteúdo. Os alunos poderão financiar a aquisição dos Cursos em até 10x sem juros no cartão de crédito.

Especialmente para essa edição dos nossos Cursos, nós ofereceremos 30% de desconto para quem adquirir todos os cursos de uma das nossas trilhas. O desconto, porém, será limitado aos primeiros inscritos. 

Qualquer dúvida adicional, por favor, mande e-mail para comercial@analisemacro.com.br.

______________

Covid-19: o formato da Curva

By | Dicas de R

Ao longo dos últimos dias, tenho publicado nesse espaço alguns posts e exercícios sobre a pandemia do coronavírus. Ontem, a propósito, publiquei o comentário de conjuntura dessa semana com um modelo SIR ajustado aos dados da doença no Brasil. Como é possível observar nesse exercício, o Brasil está no início da transmissão, com um crescimento exponencial dos casos confirmados.

Se olharmos, contudo, para os dados da China, primeiro país exposto à pandemia, a curva de casos confirmados parece seguir um formato logístico. Isso, a propósito, está em linha com a tese de "imunidade de grupo", ou seja, quanto mais pessoas vão sendo expostas ao vírus, mais pessoas ganham imunidade e a contaminação passa a desacelerar.

As curvas em formato de sino que têm sido divulgadas por aí, nesse aspecto, derivam justamente do modelo SIR, onde as pessoas são "compartimentadas" nos grupos de suscetíveis, infectados e recuperados. Ou seja, as pessoas saem de um para outro grupo, daí o formato da curva.

O formato logístico, por seu turno, não significa que devemos simplesmente abandonar as medidas de distanciamento social. Isso porque, quanto mais pessoas forem expostas ao vírus, mais casos graves serão registrados, o que tende a congestionar o sistema de saúde, como temos visto na Itália.

A pergunta de um trilhão de reais, portanto, é onde é o "limite superior" da curva logística.

(*) Isso e muito mais você aprende no nosso Curso de Microeconometria usando o R.

___________


Modelando o coronavírus no Brasil

By | Comentário de Conjuntura

Nas últimas semanas, o mundo foi assolado pela maior pandemia das últimas décadas, com impactos severos sobre os mercados globais e sobre os sistemas de saúde de grande parte dos países. No Brasil, o primeiro caso foi registrado no último dia 26 de fevereiro e a curva de crescimento dos infectados segue uma trajetória exponencial. De forma a compreender o comportamento dos casos no país, nós vamos implementar o famoso modelo SIR proposto por Kermack e McKendrick (1927) aos dados de covid-19 no Brasil. Meu objetivo aqui é basicamente construir o gráfico abaixo com as previsões de casos confirmados a partir de um modelo SIR.

Para estimar o modelo SIR, estou basicamente replicando o código do blog Learning Machines, com algumas mudanças tópicas para visualização e previsão dos casos infectados nos próximos dias em nosso país. Os dados para o Covid-19 foram obtidos através do pacote nCov2019. É possível, diga-se, que existam dados mais atualizados no repositório da JHU ou na plataforma do Ministério da Saúde. Os demais pacotes utilizados são carregados a seguir.


require(nCov2019)
require(dplyr)
require(ggplot2)
require(scales)
require(gridExtra)
require(deSolve)

Os dados são obtidos a seguir.


## Obtendo os dados
data = load_nCov2019()
data_global = data["global"] #extract global data
data_br = filter(data_global, country == 'Brazil')

A seguir, visualizamos os dados.


Infected = data_br$cum_confirm
Day <- 1:(length(Infected))
N <- 211289547 # População do Brasil

df = tibble(Day, Infected, lnInfected = log(Infected))

g1 = ggplot(df, aes(x=Day, y=Infected))+
geom_line()+
geom_point()+
labs(x='Dias', y='Casos')

g2 = ggplot(df, aes(x=Day, y=lnInfected))+
geom_line()+
geom_point()+
geom_smooth(method='lm', se=FALSE)+
labs(x='Dias', y='log(Casos)')

grid.arrange(g1, g2,
ncol=2, nrow=1,
top='Total de Infectados por Covid-19 no Brasil')

O modelo SIR é um dos modelos epidemiológicos mais simples, e muitos modelos são derivações do mesmo. O modelo consiste em três compartimentos: S para o número de pessoas suscetíveis à doença, I para o número de infectados e R para o número de indivíduos recuperados (ou imunes).

Para modelar a dinâmica de uma epidemia, precisamos de três equações diferenciais, uma para a mudança em cada compartimento, com o parâmetro \beta controlando a transição entre S e I e \gamma controlando a transição entre I e R:

(1)   \begin{align*} \frac{dS}{dI} &= \frac{\beta IS}{N} \nonumber \\ \frac{dI}{dt} &= \frac{\beta IS}{N} - \gamma I \nonumber \\ \frac{dR}{dt} &= \gamma I \nonumber \end{align*}

A seguir implementamos o código do blog Learning Machines para ajustar o modelo aos nossos dados:


SIR <- function(time, state, parameters) {
par <- as.list(c(state, parameters))
with(par, {
dS <- -beta/N * I * S
dI <- beta/N * I * S - gamma * I
dR <- gamma * I
list(c(dS, dI, dR))
})
}


init <- c(S = N-Infected[1], I = Infected[1], R = 0)

RSS <- function(parameters) {
names(parameters) <- c("beta", "gamma")
out <- ode(y = init, times = Day, func = SIR, parms = parameters)
fit <- out[ , 3]
sum((Infected - fit)^2)
}


Opt <- optim(c(0.5, 0.5), RSS,
method = "L-BFGS-B",
lower = c(0, 0), upper = c(1, 1))

Opt_par <- setNames(Opt$par, c("beta", "gamma"))


t <- 1:33 # time in days
fit <- data.frame(ode(y = init, times = t,
func = SIR, parms = Opt_par))

Com o modelo estimado, nós podemos ver o ajuste do mesmo abaixo.


df2 = tibble(time = data_br$time,
observado = data_br$cum_confirm,
modelo = round(fit$I[1:length(Infected)],0),
dias = Day)

ggplot(df2, aes(x=time))+
geom_point(aes(y=observado, colour='Casos Confirmados'),
stat='identity')+
geom_line(aes(y=modelo, colour='Modelo'))+
scale_colour_manual('',
values=c('Casos Confirmados'='black',
'Modelo'='red'))+
scale_x_date(breaks = date_breaks("1 day"),
labels = date_format("%d/%b"))+
theme(axis.text.x=element_text(angle=45, hjust=1),
plot.title = element_text(size=12, face='bold'),
legend.position = c(.3,.6))+
labs(x='', y='Casos Confirmados',
title='Modelando casos de Covid-19 no Brasil',
subtitle='Modelo SIR aplicado ao Brasil',
caption='analisemacro.com.br')

Na sequência nós visualizamos os casos previstos para os próximos dias.


dates = seq(data_br$time[1], length.out = length(t), by='1 days')
df3 = tibble(time = dates,
observado = c(data_br$cum_confirm,
rep(NA,
length(fit$I)-length(data_br$cum_confirm))),
modelo = round(fit$I,0))

ggplot(df3, aes(x=time))+
annotate("rect", fill = "orange", alpha = 0.3,
xmin = as.Date('2020-03-24'),
xmax = as.Date('2020-03-29'),
ymin = -Inf, ymax = Inf)+
annotate('text', x=as.Date('2020-03-26'), y=1000,
label='Previsão',
colour='black', size=4.5)+
geom_point(aes(y=observado, colour='Casos Confirmados'),
stat='identity', size=3)+
geom_line(aes(y=modelo, colour='Modelo'),
linetype='dashed', size=.8)+
scale_colour_manual('',
values=c('Casos Confirmados'='black',
'Modelo'='red'))+
scale_x_date(breaks = date_breaks("1 day"),
labels = date_format("%d/%b"))+
theme(axis.text.x=element_text(angle=45, hjust=1),
plot.title = element_text(size=12, face='bold'),
legend.position = c(.3,.6))+
labs(x='', y='Casos Confirmados',
title='Projetando casos de Covid-19 no Brasil',
subtitle='Modelo SIR aplicado ao Brasil',
caption='Fonte: analisemacro.com.br')

Mantida a trajetória de crescimento, teremos quase 9 mil casos no próximo dia 29/03. Obviamente que essa tendência não leva em consideração as medidas de distanciamento social que visam reduzir a taxa de reprodução, isto é, quantas pessoas saudáveis uma pessoa infectada contamina, em média. Ela é obtida pela razão entre os parâmetros \beta e \gamma. Para os dados disponibilizados até aqui, a taxa de reprodução está em 1,79 no Brasil, abaixo de 2 que tem sido a taxa obtida em outros países.

________________________

Kermack, William Ogilvy, and Anderson G. McKendrick. 1927. “A Contribution to the Mathematical Theory of Epidemics.” Proceedings of the Royal Society of London, Series A 115, no. 772: 700–721.

(*) Aprenda R nos nossos Cursos Aplicados de R.

(**) Um pdf com os códigos estará disponível amanhã no Clube do Código.


Super Combos: 30% de desconto nas nossas trilhas!

By | Cursos da Análise Macro

Reeditamos nossos Super Combos para você começar 2020 colocando uma linguagem de programação no currículo. Não fique para trás, pois cada vez mais empregos e empresas têm exigido conhecimentos de programação. São cada vez mais frequentes os anúncios de vagas de emprego/estágio onde o recrutador coloca como conhecimento diferencial saber alguma linguagem de programação como \mathbf{R}, voltada para análise de dados. Com o avanço das bases de dados, em pouco tempo isso deixará de ser diferencial e passará a ser mandatório, como falar inglês ou saber Excel Avançado.

E de modo a lhe oferecer uma oportunidade única e exclusiva, vamos conceder até 50% de desconto para os primeiros que adquirirem os nossos combos: todos os Cursos de cada uma das nossas cinco áreas por um único preço. Isso mesmo, você irá levar todos os cursos de econometria, por exemplo, por um único preço, com até 30% de desconto.

Em um plano exclusivo, você terá acesso a todo o material dos Cursos da área, videoaulas gravadas, plataforma exclusiva de dúvidas, mentorias personalizadas, certificados e acesso ao Clube do Código por 1 ano.

Isso mesmo: tudo isso com desconto de 30%! É a oportunidade que faltava para você colocar uma linguagem de programação no seu currículo. Clique nos links abaixo e adquira já os nossos Combos. A oferta é limitadíssima e acabará em muito pouco tempo, então garanta já a sua vaga!

Para conhecer os detalhes de cada curso, você pode navegar pelas páginas dos Cursos aqui. A aquisição dos combos, entretanto, é exclusiva pelos links acima.

Todos os nossos Cursos incluem Nivelamento gratuito em R e podem ser financiados em até 10x sem juros no cartão de crédito. 

 

Cadastre-se na newsletter
e receba nossas novidades em primeira mão!