Data2Stats: Lesson 3 Processing data in R (1) · Исследование данных (1)...
Transcript of Data2Stats: Lesson 3 Processing data in R (1) · Исследование данных (1)...
Data2Stats: Lesson 3
Processing data in R
(1)
Anton Örn Karlsson
4 июня 2019 г.
Этапы обработки данных для официальной
статистики
– Интеграция данных
– Классификация и кодирование
– Обзор и проверка
– Редактирование и замещение
– Вывод новых переменных и единиц
– Вычисление весового
коэффициента
– Вычисление сводных данных
– Завершение файлов данных
Часть первая
– Интеграция данных
– Классификация и
кодирование
Исследование данных (1)
– Сначала нам нужно взглянуть на наши данные
– Общая характеристика
– Начнем с чтения данных в R с помощью read.csv
– затем мы рассмотрим верхние 10 строк
данных с помощью функции head()
• Функция View() возвращает весь набор данных
Exploring data(2)
gogn <-
read.csv("gogn\\RO_LFS_2013Q1.csv")gogn <-
read.csv("gogn\\RO_LFS_2013Q1.csv")head(gogn)## COEFF QUARTER REFYEAR REFWEEK INTWEEK COUNTRY REGION DEGURBA HHINST
## 1 0.2207200 Q1 2013 12 13 RO NA 3 9
## 2 0.6838835 Q1 2013 6 7 RO NA 0 9
## 3 0.6283906 Q1 2013 1 2 RO NA 0 9
## 4 0.3876863 Q1 2013 2 3 RO NA 3 9
## 5 0.5653553 Q1 2013 13 14 RO NA 0 9
## 6 0.8134210 Q1 2013 9 10 RO NA 0 9
## INTWAVE INTQUEST REM YEAR HHPRIV SEX AGE NATIONAL YEARESID
## 1 1 2 3 2013 1 1 32 000-OWN COUNTRY 0
## 2 3 2 2 2013 1 1 20 000-OWN COUNTRY 0
## 3 2 2 1 2013 1 1 20 000-OWN COUNTRY 0
## 4 3 2 1 2013 1 2 7 000-OWN COUNTRY 0
## 5 2 2 3 2013 1 2 7 000-OWN COUNTRY 0
## 6 3 2 2 2013 1 2 7 000-OWN COUNTRY 0
## COUNTRYB PROXY WSTATOR NOWKREAS STAPRO SIGNISAL COUNTRYW
## 1 000-OWN COUNTRY 1 NA 99 5 9 000-OWN COUNTRY
## 2 000-OWN COUNTRY 2 NA 99 9 9 NO ANSWER
## 3 000-OWN COUNTRY 2 NA 99 9 9 NO ANSWER
## 4 000-OWN COUNTRY 9 NA 99 9 9 NO ANSWER
## 5 000-OWN COUNTRY 9 NA 99 9 9 NO ANSWER
## 6 000-OWN COUNTRY 9 NA 99 9 9 NO ANSWER
Exploring data(3)
dim(gogn)
## [1] 57552 100
glimpse(gogn) #from dplyr
## Observations: 57,552
## Variables: 100## $ COEFF
## $ QUARTER
## $ REFYEAR
## $ REFWEEK
## $ INTWEEK
## $ COUNTRY
## $ REGION
## $ DEGURBA
## $ HHINST
## $ INTWAVE
## $ INTQUEST
## $ REM
## $ YEAR
## $ HHPRIV
## $ SEX
## $ AGE
<dbl> 0.2207200, 0.6838835, 0.6283906, 0.3876863, 0.56535...
<fct> Q1, Q1, Q1, Q1, Q1, Q1, Q1, Q1, Q1, Q1, Q1, Q1, Q1,...
<int> 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 201...
<int> 12, 6, 1, 2, 13, 9, 13, 7, 1, 13, 10, 2, 1, 7, 8, 1...
<int> 13, 7, 2, 3, 14, 10, 14, 8, 2, 14, 11, 3, 2, 8, 9, ...
<fct> RO, RO, RO, RO, RO, RO, RO, RO, RO, RO, RO, RO, RO,...
<lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,...
<int> 3, 0, 0, 3, 0, 0, 0, 0, 3, 0, 3, 0, 0, 0, 3, 3, 0, ...
<int> 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, ...
<int> 1, 3, 2, 3, 2, 3, 3, 1, 4, 4, 2, 4, 2, 4, 2, 3, 1, ...
<int> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ...
<int> 3, 2, 1, 1, 3, 2, 3, 2, 1, 3, 3, 1, 1, 2, 2, 1, 2, ...
<int> 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 201...
<int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...
<int> 1, 1, 1, 2, 2, 2, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 1, ...
<int> 32, 20, 20, 7, 7, 7, 47, 65, 65, 65, 65, 20, 75, 65...
Exploring data(4)
summary(gogn)## COEFF QUARTER REFYEAR REFWEEK
## Min. :0.07304 Q1:57552 Min. :2013 Min. : 1.00
## 1st Qu.:0.18614 1st Qu.:2013 1st Qu.: 4.00
## Median :0.26188 Median :2013 Median : 7.00
## Mean :0.34789 Mean :2013 Mean : 6.93
## 3rd Qu.:0.46600 3rd Qu.:2013 3rd Qu.:10.00
## Max. :1.65446 Max. :2013 Max. :13.00
##
## INTWEEK COUNTRY REGION DEGURBA HHINST
## Min. : 2.00 RO:57552 Mode:logical Min. :0.000 Min. :9
## 1st Qu.: 5.00 NA's:57552 1st Qu.:0.000 1st Qu.:9
## Median : 8.00 Median :0.000 Median :9
## Mean : 7.93 Mean :1.351 Mean :9
## 3rd Qu.:11.00 3rd Qu.:3.000 3rd Qu.:9
## Max. :14.00 Max. :3.000 Max. :9
## NA's :43
## INTWAVE INTQUEST REM YEAR HHPRIV
## Min. :1.000 Min. :2 Min. :1.000 Min. :2013 Min. :1
## 1st Qu.:2.000 1st Qu.:2 1st Qu.:1.000 1st Qu.:2013 1st Qu.:1
## Median :3.000 Median :2 Median :2.000 Median :2013 Median :1
## Mean :2.532 Mean :2 Mean :1.908 Mean :2013 Mean :1
## 3rd Qu.:4.000 3rd Qu.:2 3rd Qu.:3.000 3rd Qu.:2013 3rd Qu.:1
## Max. :4.000 Max. :2 Max. :3.000 Max. :2013 Max. :1
##
Исследование данных (5)- Хотя здесь и не отображается, функция skim ()
предоставляет очень простую гистограмму для
целочисленных и числовых переменных.
skim(gogn[c("HATLEV1D","AGE","WSTATOR")]) #from
skimr## Warning in .x(x): Variable contains value(s) of "" that have been converted to "empty".
## Skim summary statistics
## n obs: 57552
## n variables: 3
##
## -- Variable type:factor -------------------------------------------------------------------------------------
------------------------------------
top_counts ordered
M: 25776, L: 21237, H: 5404, 9: 5130 FALSE
## variable missing complete n n_unique ##
HATLEV1D 0 57552 57552 5 ##
##
##
## -- Variable type:integer ------------------------------------------------------------------------------------
------------------------------------
## variable missing complete n mean sd p0 p25 p50 p75 p100 hist
## AGE 0 57552 57552 46.06 21.07 7 32 47 65 75
<U+2582><U+2583><U+2585><U+2581><U+2586><U+2581><U+2587><U+2583>
##
## -- Variable type:logical ------------------------------------------------------------------------------------
------------------------------------
## variable missing complete n mean count
## WSTATOR 57552 0 57552 NaN 57552
Исследование данных (6)
– В пакете DataExplorer у нас есть функция create_report()– Она обеспечивает комплексный отчет в формате HTML
(так называемый отчет профилирования данных)о различных методах анализа данных
– Также предлагает возможность определения зависимой
переменной
– Отчеты профилирования данных включают в себя следующее:• Базовая статистика
– Грубые показатели– Процентное выражение
• Структура данных
• Профиль о недостаточных данных
• Функция одной переменной– Гистограмма
– Столбчатая диаграмма (по частоте)– График КК
• Корреляционный анализ
• Метод главных компонентов
Интеграция данных
– Этот этап процесса может включать:• Объединение данных из нескольких источников в рамках создания
комплексных статистических данных, таких, как Национальные
счета
• Объединение геопространственных и статистических данных или
других нестатистических данных
• Группировка данных с целью повышения эффективного
количества наблюдений некоторых явлений
• Процедуры согласования или записи связей с целью связывания
микро - или макроданных из различных источников
• Слияние данных-интеграция с последующим сокращением или
заменой
• Определение приоритетов, когда два или более источника содержат
данные для одной и той же переменной с потенциально разными
значениями
Интеграция данных -
некоторые функции– merge () - функция перехода для
объединения двух наборов данных• когда два набора данных названы вместе с их
ключами
• возможно выполнение внутренних, внешних или
правых/левых соединений
– В tidyverse:• inner_join()
• left_join()
• right_join()
• full_join()
• semi_join()
• anti_join()
• nest_join()
Интеграция данных - Пример 1: Приведение в
соответствие(1)
– У нас есть номер недели в наборе данных -
мы хотим знать, какая неделя в каком месяце.
– Во-первых, давайте посмотрим количество
случаев в неделю в наборе данных, используя
tidyversegogn %>%
group_by(REFWEEK) %>%
tally()
## # A tibble: 13 x 2
## REFWEEK n
## <int> <int>
## 1 1 4494
## 2 2 4629
## 3 3 4426
## 4 4 4466
## 5 5 4567
## 6 6 4555
## 7 7 4331
## 8 8 4311
## 9 9 4500
## 10 10 4410
## 11 11 4312
## 12 12 4218
## 13 13 4333
Интеграция данных - Пример 1: Приведение в
соответствие(2)
– Затем мы создаем другой набор данных, где у нас есть месяцы, соответствующие неделям нашего ОРС, используя первый день недели, чтобы найти соответствующий месяц
– Для этого мы используем функцию week из пакета lubridata и создаем собственную функцию (функция фактически взята с этого сайта: https://markhneedham.com/blog/2015/07/10/r-date-for-given-weekyear/)
calculate_start_of_week = function(week, year) { date <- ymd(paste(year, 1, 1, sep="-")) week(date) = weekcalculate_start_of_week = function(week, year) { date <- ymd(paste(year, 1, 1, sep="-")) week(date) = week
}
Integration of data - example
1: Matching(3)gogn %>%
group_by("Month
number"=month(calculate_start_of_week(REFWEEK,
REFYEAR))) %>%
tally()
## # A tibble: 3 x 2
## `Month number` n ##
<dbl> <int>
## 1 1 22582
## 2 2 17697
## 3 3 17273
Integration of data - example 1: Matching(4)
weeks_months <- gogn %>%
group_by(mon_num=month(calculate_start_of_week(RE
FWEEK, REFYEAR)),REFWEEK) %>%
tally()
gogn_months <- gogn %>%
inner_join(weeks_months[c("REFWEEK","mon_num")],
by = "REFWEEK")
head(gogn_months$mon_num)
## [1] 3 2 1 1 3 2
Классификация и кодирование
– Применять стандарты или другой тип
классификационной схемы, чтобы
обеспечить
• Сопоставимость и согласованность данных
– За периоды времени
– По разным странам или зонам
Можно ли использовать язык R для
автоматического
кодирования?
– Презентация от Статистического управления
Исландии!
– Часть субсидии на повышение качества данных
исландского ОРС, предоставленного Евростатом.
– Основная цель заключалась в тестировании
различных методов автоматического кодирования
отраслей и профессий
– Сейчас мы покажем, как это было сделано для
профессий.
– Код для этой демонстрации доступен по запросу
• Просто отправьте электронное письмо
Ваше задание: Возраст и уровень
квалификации– Использование функций соединения tidyverse
и нашего набора данных• Создайте новую таблицу в наборе данных, содержащую
уровни квалификации МСКЗ-08
• Это уровни квалификации и соответствующие основные группы МСКЗ-08:
– Уровень квалификации 4: 1 (кроме 14), 2, 01
– Уровень квалификации 3: 14, 3
– Уровень квалификации 2: 4, 5, 6, 7, 8– Уровень квалификации 1: 9, 0 (кроме 01)
– Объедините эту новую таблицу с набором данных, чтобы получить уровень квалификации для каждого респондента в наборе данных ОРС
– Ответьте на этот вопрос: Какая связь между возрастом и уровнем квалификации в данных?