1 여론조사 데이터

나무위키 제20대 대통령 선거/여론조사 데이터로 삼아 대통령 후보 여론조사를 분석한다. 한길리서치는 제외하는데 이유는 “최재형” 후보가 현시점(2021-08-01)까지 포함되어 있지 않기 때문이다.

library(tidyverse)

processed_list  <- 
  read_rds(file = glue::glue("data/namuwiki/2021-08-04_processed.rds") )

agency_raw <- processed_list$agency_tbl
regime_tbl <- processed_list$regime_tbl

2 정권 유지론 vs 정권 교체론

2.1 정적 그래프

library(extrafont)
loadfonts()

## 조사기관 
regime_agency_tbl <- regime_tbl %>% 
  pivot_longer(cols = contains("정권"), names_to = "측정지표", values_to = "지지율") %>% 
  group_by(조사일시, 측정지표) %>%
  summarise(조사기관 = paste0(조사기관, collapse = "\n"),
            조사기관수 = n()) %>% 
  ungroup()

## 유지 교체 지지율
regime_survey_tbl <- regime_tbl %>% 
  pivot_longer(cols = contains("정권"), names_to = "측정지표", values_to = "지지율") %>% 
  group_by(조사일시, 측정지표) %>%
  summarise(지지율   = mean(지지율, na.rm = TRUE)) %>%
  ungroup()

regime_plot_tbl <- left_join(regime_survey_tbl, regime_agency_tbl)

regime_g <- regime_plot_tbl %>% 
    ggplot(aes(x = 조사일시, y = 지지율, color = 측정지표, group = 측정지표, 
               text = paste("&#183; 조사기관수:", 조사기관수, "\n",
                            "&#183; 조사기관:", 조사기관, "\n",
                            "&#183; 조사일시:", 조사일시, "\n",
                            "&#183; 지지율:", 지지율, " %"))) +   
      geom_line() +
      geom_point() +
      theme_bw(base_family = "NanumGothic") +
      scale_x_date(date_labels = "%m월 %d일", date_breaks = "1 month")+ 
    labs(title    = "제20대 대통령 선거/여론조사",
         subtitle = "정권 유지론 vs 정권 교체론",
         caption  = "데이터 출처: https://namu.wiki/w/제20대 대통령 선거/여론조사",
         color    = "정권교체여부: ",
         x        = "",
         y        = "지지율(%)") +
    theme(legend.position = "top") +
    scale_colour_manual(values = c("red", "blue")) +
    scale_y_continuous(limits = c(0,100), breaks = seq(0, 100, 20))

regime_g

2.2 인터랙티브 그래프

plotly::ggplotly(regime_g, tooltip = "text")

3 주요 대권주자

3.1 여론조사 기관

갤럽, 리얼미터, KSOI, NBS 4개 여론기관을 추려 지지율 추이를 주간 조사를 월평균으로 지지율 추이를 확인해본다.

agency_tbl <- agency_raw %>% 
  mutate(조사월 = str_extract(월, "^[0-9]{1,2}") %>% as.integer) %>% 
  group_by(조사월, 후보, 조사기관) %>% 
  summarise(지지율 = mean(지지율, na.rm = TRUE)) %>% 
  ungroup() %>% 
  mutate(조사일시 = lubridate::make_date(year = 2021, month = 조사월, day = 15)) %>% 
  select(조사일시, 조사기관, 후보, 지지율) %>% 
  mutate(후보 = factor(후보, levels = c("이재명", "윤석열", "이낙연", "정세균", "최재형", "추미애", "홍준표", "안철수", "오세훈")))

agency_tbl %>% 
  ggplot(aes(x = 조사일시, y = 지지율, color = 후보)) +
    geom_line() +
    geom_point() +
    facet_wrap(~조사기관) +
    theme_bw(base_family = "NanumGothic") +
    scale_x_date(date_labels = "%m 월") +
    labs(title    = "제20대 대통령 선거/여론조사",
         subtitle = "주요 대권후보 지지율 추이",
         caption  = "데이터 출처: https://namu.wiki/w/제20대 대통령 선거/여론조사",
         x        = "",
         y        = "지지율(%)") +
    scale_y_continuous(labels = scales::percent) +
    theme(legend.position = "right") +
    scale_color_manual(values=c("blue", "red", "midnightblue", "lightblue", "gray75", "gray75", "gray75", "gray75", "gray75", "gray75"))

 

데이터 과학자 이광춘 저작

kwangchun.lee.7@gmail.com