Lei de Zipf · pandemia

Ainda a Lei de Zipf e o Covid-19 nos municípios brasileiros

Como exposto anteriormente, sigo com a estimativa diária da Lei de Zipf com dados municipais. O pessoal que compila os dados parece atualizar o dado diário mais de uma vez no dia seguinte. Sei disto porque o fato do número de casos de contaminados não cair de um dia para outro é um indicador de consistência da base de dados.

Por exemplo, hoje, 10/04, verifico que os dados de 09/04 não seguem, no momento, esta regra. Aliás, o número de observações, “n”, do dia 08/04 que, ontem pela manhã, era de n = 275, hoje é n= 324. Os dados de ontem (09/04) nos dão n = 178, o que não me permite uma confiança no resultado da estimação que fiz agora cedo.

Mas no período de 30/03 até 08/04, o coeficiente que nos dá uma ideia de se há um padrão Zipf evoluiu da seguinte forma: -0.767, -0.800, -0.823, -0.819, -0.825, -0.839, -0.827, -0.830, -0.833, -0.929.

Surpreende, apenas, o salto em 08/04. Vejamos, após a próxima revisão dos compiladores, se o coeficiente de fato terá mudado de patamar.

pandemia · R

Dica R do Dia: Lei de Zipf e o Covid-19 (updated)

Um exercicío em R com os dados deste pessoal. O ranking foi construído com base no número de casos confirmados (normalizado por 100 mil habitantes).

Explicando: a cada dia faço o download da planilha. Por exemplo, para o dia 29-03-2020 eu uso o arquivo .csv para gerar o “old3”. Em seguida, tiro o que for “Importados/Indefinidos” e fico apenas com as cidades (“city”). Crio o ranking e estimo a equação de Zipf. No código abaixo, o que fiz para os dias 29 e 30.

library(dplyr)

old3<-read.table("C:/Users/cdshi/OneDrive/Documents/Meus Documentos/covid19-29-03.csv",
header=TRUE, sep=",",na.strings="NA", dec=".", strip.white=TRUE)

old3<-subset(old3, old3$city!="Importados/Indefinidos")

old3<-subset(old3, place_type=="city",
select = c(confirmed_per_100k_inhabitants))

old3 %
mutate(rank = 1:nrow(old3))

m1<- lm(log(old3$rank)~log(old3$confirmed_per_100k_inhabitants))

old2<-read.table("C:/Users/cdshi/OneDrive/Documents/Meus Documentos/covid19-30-03.csv",
header=TRUE, sep=",",na.strings="NA", dec=".", strip.white=TRUE)

old2<-subset(old2, old2$city!="Importados/Indefinidos")
old2<-subset(old2, place_type=="city",
select = c(confirmed_per_100k_inhabitants))

old2 %
mutate(rank = 1:nrow(old2))

m2<-lm(log(old2$rank)~log(old2$confirmed_per_100k_inhabitants))

Assim, até os dados de 07/04 05/04, estimei o mesmo modelo. A tabela, não tão bonita, está aí embaixo (clique para ampliar).

covid_zipf_corrigido

Vale destacar que os nomes das cidades têm problemas com caracteres especiais nos dias 29 e 30 de março. Como fiz meu exercício a partir do dia 01 de abril em diante, estes dois dias foram tentativas de checar os dados anteriores.

O que é curioso é o número de observações no dia 29 de março: 267. Dali em diante, os números vão numa crescente (143 a 230). Parece ser algum problema com a base de dados (seria, por exemplo, por conta da população? Ou os dados teriam sido revisados? Talvez eu não tenha visto algo na base).

Assim, parece fazer sentido observar os dados a partir do dia 30/03 em diante. O que se observa é que o coeficiente de Zipf (teoricamente, “-1”) é razoavelmente constante em “-0.8”.

Note que não tenho a menor pretensão de prever nada – nem acha(ta)r alguma curva de infectados. Minha curiosidade é apenas saber se o número de casos reportados diariamente (normalizados por 100 mil habitantes) segue a lei de Zipf.

Uma interpretação desta estimação pode ser a seguinte: o aumento de 1% no número de confirmados por 100 mil habitantes faz com que a posição do município no ranking suba em 0.8%, em média.

Finalmente, acho ótimo o esforço do pessoal que tem coletado estes dados e espero atualizar minhas estimações diariamente (se nada der errado, claro).