Data2Stats: Lesson 3 Processing data in R (1) · Исследование данных (1)...

18
Data2Stats: Lesson 3 Processing data in R (1) Anton Örn Karlsson 4 июня 2019 г.

Transcript of Data2Stats: Lesson 3 Processing data in R (1) · Исследование данных (1)...

Page 1: Data2Stats: Lesson 3 Processing data in R (1) · Исследование данных (1) –Сначала нам нужно взглянуть на наши данные –Общая

Data2Stats: Lesson 3

Processing data in R

(1)

Anton Örn Karlsson

4 июня 2019 г.

Page 2: Data2Stats: Lesson 3 Processing data in R (1) · Исследование данных (1) –Сначала нам нужно взглянуть на наши данные –Общая

Этапы обработки данных для официальной

статистики

– Интеграция данных

– Классификация и кодирование

– Обзор и проверка

– Редактирование и замещение

– Вывод новых переменных и единиц

– Вычисление весового

коэффициента

– Вычисление сводных данных

– Завершение файлов данных

Page 3: Data2Stats: Lesson 3 Processing data in R (1) · Исследование данных (1) –Сначала нам нужно взглянуть на наши данные –Общая

Часть первая

– Интеграция данных

– Классификация и

кодирование

Page 4: Data2Stats: Lesson 3 Processing data in R (1) · Исследование данных (1) –Сначала нам нужно взглянуть на наши данные –Общая

Исследование данных (1)

– Сначала нам нужно взглянуть на наши данные

– Общая характеристика

– Начнем с чтения данных в R с помощью read.csv

– затем мы рассмотрим верхние 10 строк

данных с помощью функции head()

• Функция View() возвращает весь набор данных

Page 5: Data2Stats: Lesson 3 Processing data in R (1) · Исследование данных (1) –Сначала нам нужно взглянуть на наши данные –Общая

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

Page 6: Data2Stats: Lesson 3 Processing data in R (1) · Исследование данных (1) –Сначала нам нужно взглянуть на наши данные –Общая

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...

Page 7: Data2Stats: Lesson 3 Processing data in R (1) · Исследование данных (1) –Сначала нам нужно взглянуть на наши данные –Общая

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

##

Page 8: Data2Stats: Lesson 3 Processing data in R (1) · Исследование данных (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

Page 9: Data2Stats: Lesson 3 Processing data in R (1) · Исследование данных (1) –Сначала нам нужно взглянуть на наши данные –Общая

Исследование данных (6)

– В пакете DataExplorer у нас есть функция create_report()– Она обеспечивает комплексный отчет в формате HTML

(так называемый отчет профилирования данных)о различных методах анализа данных

– Также предлагает возможность определения зависимой

переменной

– Отчеты профилирования данных включают в себя следующее:• Базовая статистика

– Грубые показатели– Процентное выражение

• Структура данных

• Профиль о недостаточных данных

• Функция одной переменной– Гистограмма

– Столбчатая диаграмма (по частоте)– График КК

• Корреляционный анализ

• Метод главных компонентов

Page 10: Data2Stats: Lesson 3 Processing data in R (1) · Исследование данных (1) –Сначала нам нужно взглянуть на наши данные –Общая

Интеграция данных

– Этот этап процесса может включать:• Объединение данных из нескольких источников в рамках создания

комплексных статистических данных, таких, как Национальные

счета

• Объединение геопространственных и статистических данных или

других нестатистических данных

• Группировка данных с целью повышения эффективного

количества наблюдений некоторых явлений

• Процедуры согласования или записи связей с целью связывания

микро - или макроданных из различных источников

• Слияние данных-интеграция с последующим сокращением или

заменой

• Определение приоритетов, когда два или более источника содержат

данные для одной и той же переменной с потенциально разными

значениями

Page 11: Data2Stats: Lesson 3 Processing data in R (1) · Исследование данных (1) –Сначала нам нужно взглянуть на наши данные –Общая

Интеграция данных -

некоторые функции– merge () - функция перехода для

объединения двух наборов данных• когда два набора данных названы вместе с их

ключами

• возможно выполнение внутренних, внешних или

правых/левых соединений

– В tidyverse:• inner_join()

• left_join()

• right_join()

• full_join()

• semi_join()

• anti_join()

• nest_join()

Page 12: Data2Stats: Lesson 3 Processing data in R (1) · Исследование данных (1) –Сначала нам нужно взглянуть на наши данные –Общая

Интеграция данных - Пример 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

Page 13: Data2Stats: Lesson 3 Processing data in R (1) · Исследование данных (1) –Сначала нам нужно взглянуть на наши данные –Общая

Интеграция данных - Пример 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

}

Page 14: Data2Stats: Lesson 3 Processing data in R (1) · Исследование данных (1) –Сначала нам нужно взглянуть на наши данные –Общая

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

Page 15: Data2Stats: Lesson 3 Processing data in R (1) · Исследование данных (1) –Сначала нам нужно взглянуть на наши данные –Общая

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

Page 16: Data2Stats: Lesson 3 Processing data in R (1) · Исследование данных (1) –Сначала нам нужно взглянуть на наши данные –Общая

Классификация и кодирование

– Применять стандарты или другой тип

классификационной схемы, чтобы

обеспечить

• Сопоставимость и согласованность данных

– За периоды времени

– По разным странам или зонам

Page 17: Data2Stats: Lesson 3 Processing data in R (1) · Исследование данных (1) –Сначала нам нужно взглянуть на наши данные –Общая

Можно ли использовать язык R для

автоматического

кодирования?

– Презентация от Статистического управления

Исландии!

– Часть субсидии на повышение качества данных

исландского ОРС, предоставленного Евростатом.

– Основная цель заключалась в тестировании

различных методов автоматического кодирования

отраслей и профессий

– Сейчас мы покажем, как это было сделано для

профессий.

– Код для этой демонстрации доступен по запросу

• Просто отправьте электронное письмо

[email protected]

Page 18: Data2Stats: Lesson 3 Processing data in R (1) · Исследование данных (1) –Сначала нам нужно взглянуть на наши данные –Общая

Ваше задание: Возраст и уровень

квалификации– Использование функций соединения tidyverse

и нашего набора данных• Создайте новую таблицу в наборе данных, содержащую

уровни квалификации МСКЗ-08

• Это уровни квалификации и соответствующие основные группы МСКЗ-08:

– Уровень квалификации 4: 1 (кроме 14), 2, 01

– Уровень квалификации 3: 14, 3

– Уровень квалификации 2: 4, 5, 6, 7, 8– Уровень квалификации 1: 9, 0 (кроме 01)

– Объедините эту новую таблицу с набором данных, чтобы получить уровень квалификации для каждого респондента в наборе данных ОРС

– Ответьте на этот вопрос: Какая связь между возрастом и уровнем квалификации в данных?