Dados de mobilidade COVID da Apple

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


[Esteartigofoipublicadopelaprimeiravezem[Thisarticlewasfirstpublishedon R em kieranhealy.org, e gentilmente contribuiu para os R-blogueiros]. (Você pode relatar um problema sobre o conteúdo desta página aqui)


Deseja compartilhar seu conteúdo com R-blogueiros? clique aqui se você tiver um blog ou aqui se não tiver.

A Apple lançou recentemente um lote de dados de mobilidade em conexão com a pandemia do COVID-19. Os dados são agregados a partir de solicitações de orientações no Apple Maps e são fornecidos no nível de países inteiros e também para uma seleção de grandes cidades ao redor do mundo. Dobrei o conjunto de dados no pacote covdata para R que estou atualizando, pois pretendo usá-lo neste outono em um curso que estarei ensinando. Aqui, vamos dar uma olhada rápida em alguns dados. Ao longo do caminho, como se vê, acabo me lembrando de uma lição que aprendi antes sobre garantir que você compreenda sua medida antes de pensar o que está mostrando.

A Apple divulgou dados de séries temporais para países e cidades para cada um dos três modos de locomoção: dirigir, transporte público e caminhar. A série começa em 13 de janeiro e, no momento da redação, continua até 20 de abril. As medidas de mobilidade para cada país ou cidade são indexadas a 100 no início da série, portanto, as tendências são relativas a essa linha de base. Não sabemos nada sobre o volume absoluto de uso do serviço Maps.

Veja como são os dados:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18


> apple_mobility
# A tibble: 39,500 x 5
   geo_type       region  transportation_type date       index
   <chr>          <chr>   <chr>               <date>     <dbl>
 1 country/region Albania driving             2020-01-13 100  
 2 country/region Albania driving             2020-01-14  95.3
 3 country/region Albania driving             2020-01-15 101. 
 4 country/region Albania driving             2020-01-16  97.2
 5 country/region Albania driving             2020-01-17 104. 
 6 country/region Albania driving             2020-01-18 113. 
 7 country/region Albania driving             2020-01-19 105. 
 8 country/region Albania driving             2020-01-20  94.4
 9 country/region Albania driving             2020-01-21  94.1
10 country/region Albania driving             2020-01-22  93.5
# … with 39,490 more rows

o index é o resultado medido, rastreando o uso relativo das direções para cada modo de transporte. Vamos dar uma olhada nos dados de Nova York.

Leia Também  Spire Payments ganha contrato RAY
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

raw_ny <- apple_mobility %>%
  filter(region == "New York City") %>%
  select(region:index) %>%
  rename(mode = transportation_type) %>%
  mutate(mode = tools::toTitleCase(mode),
         weekend = isWeekend(date),
         holiday = isHoliday(as.timeDate(date), listHolidays())) %>%
  mutate(max_day = ifelse(is_max(index), date, NA),
         max_day = as_date(max_day))

p_raw_ny <- ggplot(raw_ny, mapping = aes(x = date, y = index,
                                      group = mode, color = mode)) +
  geom_vline(data = subset(raw_ny, holiday == TRUE),
             mapping = aes(xintercept = date),
             color = my.colors("bly")[5], size = 2.9, alpha = 0.1) +
  geom_hline(yintercept = 100, color = "gray40") +
  geom_line() +
  geom_text_repel(aes(label = format(max_day, format = "%a %b %d")),
                  size = rel(2), nudge_x = 1, show.legend = FALSE) +
  scale_color_manual(values = my.colors("bly")) +
  labs(x = "Date", y = "Relative Mobility",
       color = "Mode",
       title = "New York City's relative trends in activity. Baseline data with no correction for weekly seasonality",
       subtitle = "Data are indexed to 100 for usage on January 13th 2020. Weekends shown as vertical bars. Date with highest relative activity index labeled.nNote that in Apple's data 'Days' are defined as Midnight to Midnight PST.",
       caption = "Data: Apple. Graph: @kjhealy") +
  theme(legend.position = "top")

p_raw_ny
Mobilidade relativa na cidade de Nova York. Toque ou clique para ampliar.

Mobilidade relativa na cidade de Nova York. Toque ou clique para ampliar.

Como você pode ver, temos três séries. O pulso semanal de atividade é imediatamente visível à medida que as pessoas caminham mais, menos, dirigem e tomam o metrô, dependendo de que dia é hoje. Lembre-se de que os dados são baseados em solicitações de instruções. Então, por um lado, táxis e Ubers podem fazer esse tipo de solicitação a cada viagem. Mas as pessoas que moram em Nova York não precisam de instruções passo a passo ou passo a passo para chegar ao trabalho. Eles já sabem como trabalhar. Mesmo que a atividade geral ocorra nos finais de semana, os pedidos de orientações aumentam à medida que as pessoas descobrem como chegar a restaurantes, eventos sociais ou outros destinos. No gráfico aqui, marquei o valor relativo mais alto de solicitações de rotas, que é para tráfego de pedestres em 22 de fevereiro. Não estou interessado nessa data em particular para Nova York, mas quando olhamos para mais de uma cidade, pode ser útil ver como os valores máximos variam.

Leia Também  psiconetria 0.7, pré-impressão com meta-análise e curso SEM online

A grande queda na mobilidade relacionada ao COVID ocorre claramente em meados de março. Podemos querer ver exatamente essa tendência, removendo o “ruído” da variação diária. Ao analisar as séries temporais, geralmente queremos decompor as séries em componentes, para ver alguma tendência subjacente. Há muitas maneiras de fazer isso e muitas decisões a serem tomadas se formos fazer fortes inferências a partir dos dados. Aqui, vou mantê-lo direto e usar algumas das ferramentas úteis fornecidas pelos pacotes tidyverts (sic) para análise de séries temporais. Usaremos uma decomposição STL para decompor a série em tendência, sazonale restante componentes. Nesse caso, a “estação” é uma semana em vez de um mês ou um trimestre do calendário. A tendência é uma regressão ponderada localmente ajustada aos dados, líquida de sazonalidade. O restante é o resíduo residual em um determinado dia, depois que a tendência subjacente e as flutuações diárias “normais” forem contabilizadas. Aqui está a tendência para Nova York.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

resids_ny <- apple_mobility %>%
  filter(region == "New York City") %>%
  select(region:index) %>%
  rename(mode = transportation_type) %>%
  mutate(mode = tools::toTitleCase(mode)) %>%
  as_tsibble(key = c(region, mode)) %>%
  model(STL(index)) %>%
  components() %>%
  mutate(weekend = isWeekend(date),
         holiday = isHoliday(as.timeDate(date), listHolidays())) %>%
  as_tibble() %>%
  mutate(max_day = ifelse(is_max(remainder), date, NA),
         max_day = as_date(max_day))

p_resid_ny <- ggplot(resids_ny, aes(x = date, y = remainder, group = mode, color = mode)) +
  geom_vline(data = subset(resids, holiday == TRUE),
             mapping = aes(xintercept = date),
             color = my.colors("bly")[5], size = 2.9, alpha = 0.1) +
  geom_line(size = 0.5) +
  geom_text_repel(aes(label = format(max_day, format = "%a %b %d")),
                  size = rel(2), nudge_x = 1, show.legend = FALSE) +
  scale_color_manual(values = my.colors("bly")) +
  labs(x = "Date", y = "Remainder", color = "Mode",
       title = "New York City, Remainder component for activity data",
       subtitle = "Weekends shown as vertical bars. Date with highest remainder component labeled.nNote that in Apple's data 'Days' are defined as Midnight to Midnight PST.",
       caption = "Data: Apple. Graph: @kjhealy") +
  theme(legend.position = "top")
  
 p_resid_ny 
Componente de tendência da série de Nova York. Toque ou clique para ampliar.

Componente de tendência da série de Nova York. Toque ou clique para ampliar.

Podemos fazer pequenos múltiplos mostrando os dados brutos (ou os componentes, como desejamos) de todas as cidades do conjunto de dados, se desejar:

Dados para todas as cidades. Toque ou clique para ampliar.

Dados para todas as cidades. Toque ou clique para ampliar.

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

Este não é o tipo de gráfico que ficará ótimo no seu telefone, mas é útil para ter uma noção geral das tendências. Além dos declínios acentuados em todos os lugares – com intervalos ligeiramente diferentes, algo que vale a pena examinar separadamente – outras coisas aparecem. Há uma boa quantidade de variação entre as cidades por modo de transporte e também pela intensidade do componente sazonal. Ninguém está andando em lugar nenhum no Dubai. Alguns picos agudos também são evidentes, nem sempre no mesmo dia ou no mesmo modo de transporte. Podemos examinar mais de perto algumas das cidades de interesse nessa frente.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35

focus_on <- c("Rio de Janeiro", "Lyon", "Bochum - Dortmund", "Dusseldorf",
              "Barcelona", "Detroit", "Toulouse", "Stuttgart",
              "Cologne", "Hamburg", "Cairo", "Lille")

raw_ts <- apple_mobility %>%
  filter(geo_type == "city") %>%
  select(region:index) %>%
  rename(mode = transportation_type) %>%
  mutate(mode = tools::toTitleCase(mode),
         weekend = isWeekend(date),
         holiday = isHoliday(as.timeDate(date), listHolidays())) %>%
  filter(region %in% focus_on) %>%
  group_by(region) %>%
  mutate(max_day = ifelse(is_max(index), date, NA),
         max_day = as_date(max_day))
         
ggplot(raw_ts, mapping = aes(x = date, y = index,
                                      group = mode, color = mode)) +
  geom_vline(data = subset(raw_ts, holiday == TRUE),
             mapping = aes(xintercept = date),
             color = my.colors("bly")[5], size = 1.5, alpha = 0.1) +
  geom_hline(yintercept = 100, color = "gray40") +
  geom_line() +
  geom_text_repel(aes(label = format(max_day, format = "%a %b %d")),
                  size = rel(2), nudge_x = 1, show.legend = FALSE) +
  scale_color_manual(values = my.colors("bly")) +
  facet_wrap(~ region, ncol = 2) +
  labs(x = "Date", y = "Relative Mobility",
       color = "Mode",
       title = "Relative trends in activity, selected cities. No seasonal correction.",
       subtitle = "Data are indexed to 100 for each city's usage on January 13th 2020. Weekends shown as vertical bars.nDate with highest relative activity index labeled.nNote that in Apple's data 'Days' are defined as Midnight to Midnight PST.",
       caption = "Data: Apple. Graph: @kjhealy") +
  theme(legend.position = "top")         

Somente cidades selecionadas. Toque ou clique para ampliar.

Somente cidades selecionadas. Toque ou clique para ampliar.

Veja todos os picos de trânsito em 17 de fevereiro. O que está acontecendo aqui? Nesse ponto, pode ser útil examinar o componente residual ou restante da série em vez de analisar os dados brutos, para que possamos ver se algo interessante está acontecendo.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

resids <- apple_mobility %>%
  filter(geo_type == "city") %>%
  select(region:index) %>%
  rename(mode = transportation_type) %>%
  mutate(mode = tools::toTitleCase(mode)) %>%
  filter(region %in% focus_on) %>%
  as_tsibble(key = c(region, mode)) %>%
  model(STL(index)) %>%
  components() %>%
  mutate(weekend = isWeekend(date),
         holiday = isHoliday(as.timeDate(date), listHolidays())) %>%
  as_tibble() %>%
  group_by(region) %>%
  mutate(max_day = ifelse(is_max(remainder), date, NA),
         max_day = as_date(max_day))
         
ggplot(resids, aes(x = date, y = remainder, group = mode, color = mode)) +
  geom_vline(data = subset(resids, holiday == TRUE),
             mapping = aes(xintercept = date),
             color = my.colors("bly")[5], size = 1.5, alpha = 0.1) +
  geom_line(size = 0.5) +
  geom_text_repel(aes(label = format(max_day, format = "%a %b %d")),
                  size = rel(2), nudge_x = 1, show.legend = FALSE) +
  scale_color_manual(values = my.colors("bly")) +
  facet_wrap(~ region, ncol = 2) +
  labs(x = "Date", y = "Remainder", color = "Mode",
       title = "Remainder component for activity data (after trend and weekly components removed)",
       subtitle = "Weekends shown as vertical bars. Date with highest remainder component labeled.nNote that in Apple's data 'Days' are defined as Midnight to Midnight PST.",
       caption = "Data: Apple. Graph: @kjhealy") +
  theme(legend.position = "top")         
Restantes componentes apenas. Toque ou clique para ampliar.

Restantes componentes apenas. Toque ou clique para ampliar.

Podemos ver que há uma quantidade razoável de correspondência entre os picos na atividade, mas não está claro qual é a explicação. Para algumas cidades, as coisas parecem simples. O enorme aumento do tráfego de pedestres no Rio de Janiero corresponde ao desfile de carnaval na semana do Mardi Gras. Como se vê—obrigado para alguns local informantes para esta– o mesmo se aplica a Colônia, onde a temporada de carnaval (Fasching) também é importante. Mas isso não explica os picos que aparecem repetidamente em 17 de fevereiro em várias cidades da província alemã e francesa. É uma semana muito cedo. E por que especificamente em transito solicitações de? O que está acontecendo lá? Inicialmente, especulei que poderia estar conectado a eventos como jogos de futebol ou algo assim, mas isso não parecia muito convincente, porque eles acontecem semana após semana e, se fosse um evento incomum (como uma final), não o veria em tantas cidades. Uma segunda possibilidade era um evento de calendário amplamente compartilhado que faria com que muitas pessoas começassem a usar o transporte público. O início ou o fim das férias escolares, por exemplo, parecia um candidato plausível. Mas se esse fosse o caso, por que não o vimos em outras cidades maiores nesses países? E a França e a Alemanha estão nos mesmos calendários escolares? Isso não acontece na Páscoa, então parece improvável.

Depois de se perguntar em voz alta sobre isso no Twitter, o melhor candidato para uma explicação veio de Sebastian Geukes. Ele ressaltou que os picos de 17 de fevereiro coincidem com a Apple lançando uma cobertura expandida de muitas cidades europeias no aplicativo Maps. Naquela segunda-feira, marca o início das rotas de transporte público disponíveis para os usuários do iPhone nessas cidades. E, sem surpresa, o resultado é um aumento no número de pessoas que usam o Google Maps para esse fim, em comparação com quando não era um recurso. Eu digo “sem surpresa”, mas é claro que demorou um pouco para descobrir isso! E eu também não descobri. É uma excelente ilustração de uma regra de ouro que escrevi há pouco tempo, em um contexto semelhante.

Como regra, quando você vê uma mudança acentuada em uma série temporal de longa duração, deve sempre verificar se algum aspecto do processo de geração de dados foi alterado – como o dispositivo de medição ou os critérios para inclusão no conjunto de dados – antes de apresentar qualquer história substantiva sobre o que aconteceu e por quê. Esse é especialmente o caso de algo suscetível de mudar com o tempo, mas não a flutuações extremamente rápidas. … Como Tom Smith, diretor da Pesquisa Social Geral, gosta de dizer, se você deseja medir mudanças, não pode mudar.

Nesse caso, há mais rugas. Provavelmente teria sido mais rápido em entender o que estava acontecendo, se tivesse examinado um pouco mais os dados brutos, em vez de passar para o componente restante da decomposição da série temporal. Depois de chamar minha atenção pelo grande pico de carnaval do Rio, fui olhar o componente restante de todas essas cidades e acabei me concentrando nisso. Mas se você olhar novamente para as tendências brutas da cidade, poderá ver que a série de dados de trânsito (a linha azul) dispara no dia 17 de fevereiro, mas depois fica por perto depois, estabelecendo uma presença regular, em um nível relativo bastante alto em comparação com a sua inexistência anterior. E isso, é claro, é porque as pessoas começaram a usar esse novo recurso regularmente. Se tivéssemos dados brutos sobre os níveis absolutos de uso em rotas de transporte público, isso provavelmente teria sido claramente mais rápido.

A tendência de se lançar exatamente naquilo que os cientistas sociais chamam de “História!” A fase de análise de dados quando se olha para algum gráfico ou tabela de resultados é realmente forte. Já sabemos de outras análises relacionadas ao COVID o quão complicado e até perigoso pode ser inferir por engano demais o que você acha que vê nos dados. (Aqui está um exemplo recente.) É importante entender o que o seu instrumento de medição está realmente fazendo. Nesse caso, acho que é ainda mais importante, porque com dados do tipo que a Apple (e também o Google) lançaram, é divertido simplesmente pular para dentro e começar a especular. Isso ocorre porque geralmente não brincamos com dados altamente agregados de fontes como essa. Eu me pergunto se, no próximo ano, mais ou menos, alguém que faça uma análise ecológica, no nível da cidade, da resposta social ao COVID-19 será inadvertidamente surpreendido pela mudança na medida que está oculta neste conjunto de dados.

var vglnk = {key: ‘949efb41171ac6ec1bf7f206d57e90b8’};

(função (d, t) {
var s = d.createElement
s.src = ‘//cdn.viglink.com/api/vglnk.js’;
var r = d.getElementsByTagName
} (documento, ‘script’));

Para Deixe um comentário para o autor, siga o link e comente no blog: R em kieranhealy.org.

R-bloggers.com oferece atualizações diárias por email sobre notícias e tutoriais do R sobre o aprendizado do R e muitos outros tópicos. Clique aqui se você deseja publicar ou encontrar um emprego em ciência da dados / R.


Deseja compartilhar seu conteúdo com R-blogueiros? clique aqui se você tiver um blog ou aqui se não tiver.



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