Представьте, что вы начали планировоать свое путешествие по Европе, но ваша заинтересованность о распространенности вируса сподвигла вас на мысль об исследовании актуальных данных о распространении и опасности этого вируса в странах ЕС. Таким образом, вы поставили себе задачу ответить на несколько актуальных вопросов, ответы на которые будут представлены ниже.
Предупреждения:
Решение данного задания не требует предварительной подготовки и опыта работы с языком R, но авторы постарались поделиться с вами новым форматом, который может стать эффективным введением в концепцию отчетов в RMarkdown
Предоставленные нами данные могут немного иметь немного другое содержание в силу повседневного обновления таблицы на сайте, поэтому не волнуйтесь, если будут какие-то незначительные несовпадения в полученных расчетах
Данные по распространению covid-19 в странах ЕС. Каждая строка - это данные за день о количествах заражений и летальных исходов в определенной стране.
dateRep - дата наблюдения
country_name - название страны
cases - количество случаев заражений в указанную дату в стране из колонки country_name
deaths - количество летальных исходов в указанный день в стране из колонки country_name
library(utils)
library(dplyr)
library(stringr)
library(ggplot2)
data <- read.csv("https://opendata.ecdc.europa.eu/covid19/nationalcasedeath_eueea_daily_ei/csv", na.strings = "", fileEncoding = "UTF-8-BOM")
В данном пункте мы объединили исходный датасет с датасетом с информацией о площадях всех стран мира после сохранения только тех наблюдений, которые соответствуют самому последнему году обновления датасета (2018).
P.S данные в датасете land-area-km.csv представлены в динамичном формате, начиная с 1961 года
Предупреждение От вас не ожидается предобработка данных, так как предобработанный и исходный датасеты предоставлены нашими авторами вместе с условием задачи
Именно объеденененный датасет был предоставлен вам в комплекте с двумя исходными для того, чтобы у вас была возможность свободного выбора данных для работы и эффективного переключения между ними.
data_2 = read.csv('land-area-km.csv', sep = ',')
names(data)[names(data) == 'countriesAndTerritories'] <- 'country_name'
names(data_2)[names(data_2) == 'Entity'] <- 'country_name'
data_compiled = data %>% inner_join(data_2, on = 'country_name') %>% filter(Year == 2018)
Вопрос-1 Определить топ-5 стран по абсолютной и относительной смертностям и сравнить результаты
P.S Относительная смертность = смертность/количество случаев
Давайте ранжируем страны по абсолютной смертности (сумма показателей смертности по странам) и придём к такому выводу:
Топ-5 стран по смертности:
Италия
Франция
Германия
Испания
Польша
data %>% group_by(country_name) %>% summarize(cases_total = sum(cases), deaths_total = sum(deaths)) %>% arrange(-deaths_total) %>% top_n(5)
## # A tibble: 5 x 3
## country_name cases_total deaths_total
## <chr> <int> <int>
## 1 Italy 4641890 130421
## 2 France 6964699 116251
## 3 Germany 4160970 93123
## 4 Spain 4937984 85983
## 5 Poland 2899008 75503
Топ-5 стран по относительной смертности:
Болгария
Венгрия
Румыния
Италия
Польша
data %>% group_by(country_name) %>% summarize(deaths_rel = sum(deaths)/sum(cases)) %>% arrange(-deaths_rel) %>% top_n(5)
## # A tibble: 5 x 2
## country_name deaths_rel
## <chr> <dbl>
## 1 Bulgaria 0.0416
## 2 Hungary 0.0368
## 3 Romania 0.0308
## 4 Italy 0.0281
## 5 Poland 0.0260
Вопрос 2 Определить топ-5 стран по средней смертности
Ответ совпадает с рейтингом стран по абсолютной сметртности
data %>% group_by(country_name) %>% summarize( deaths_avg = mean(deaths)) %>% arrange(-deaths_avg) %>% top_n(5)
## # A tibble: 5 x 2
## country_name deaths_avg
## <chr> <dbl>
## 1 Italy 633.
## 2 France 564.
## 3 Germany 452.
## 4 Spain 417.
## 5 Poland 367.
Вопрос 3 Определить день с максимальными количествами зарегистрированных заражений и летальных исходов и сравнить полученные результаты
Можем заметить, что 28.02.2021 и 01.03.2021 являются самыми насыщенными днями в исходном датасете, но при просмотре других строк и логическом анализе эти значения оказываются неправдоподобно высокими, т.к за почти двухлетний период в во всем мире было зарегистрировано не более 220 миллионов случаев, а здесь - 3,1 и 19,5 миллионов. Такие значения могут быть связаны с тем, что сайт мог разместить всю предыдущую статистику в первый день своей работы (28 февраля). Можете копнуть глубже для поиска правдоподных причин :)
По этой причине, правильным ответом можно назвать третье место нашего топа - это 01.04.2021
d = data %>% group_by(day, month, year) %>% summarize(max_cases = sum(cases)) %>% arrange(-max_cases)
d[1:5,]
## # A tibble: 5 x 4
## # Groups: day, month [5]
## day month year max_cases
## <int> <int> <int> <int>
## 1 1 3 2021 19504293
## 2 28 2 2021 3109689
## 3 1 4 2021 194153
## 4 26 3 2021 193222
## 5 25 3 2021 184234
В случае с летальными исходами наблюдается похожая тенденция с особенностью данных, но правдоподобный день отличается от полученного на первых двух позициях результата
b = data %>% group_by(day, month, year) %>% summarize(max_deaths = sum(deaths)) %>% arrange(-max_deaths)
b[1:5,]
## # A tibble: 5 x 4
## # Groups: day, month [5]
## day month year max_deaths
## <int> <int> <int> <int>
## 1 1 3 2021 479082
## 2 28 2 2021 69142
## 3 9 4 2021 3349
## 4 8 4 2021 3181
## 5 10 4 2021 3121
Вопрос 4 Определить самую безопасную/опасную страну для поездки в коронавирусные выходные. В данном задании предполагалось придумать свой способ определения такой страны, но данные по территориальной информации стран должны были послужить в качестве подсказки
Решение: Авторы задачи взяли количество случаев на квадратный километр в качестве метрики опасности и пришли к ответам ниже
Самая опасная страна: Мальта
data_compiled %>% group_by(country_name) %>% summarize(prop = sum(cases)/Land.area..sq..km.
) %>% group_by(country_name) %>% summarize(prop = mean(prop)) %>% arrange(-prop) %>% top_n(5)
## # A tibble: 5 x 2
## country_name prop
## <chr> <dbl>
## 1 Malta 116.
## 2 Netherlands 59.0
## 3 Belgium 40.5
## 4 Luxembourg 31.9
## 5 Czechia 21.9
Самая безопасная страна: Исландия
data_compiled %>% group_by(country_name) %>% summarize(prop = sum(cases)/Land.area..sq..km.
) %>% group_by(country_name) %>% summarize(prop = mean(prop)) %>% arrange(-prop) %>% top_n(-5)
## # A tibble: 5 x 2
## country_name prop
## <chr> <dbl>
## 1 Sweden 2.82
## 2 Latvia 2.44
## 3 Norway 0.501
## 4 Finland 0.451
## 5 Iceland 0.114