선거구 평균 인구수

국회의원 선거구획정 선거구별 평균, 상한/하한 인구수 분석

저자
소속

1 선거구획정

국회전자도서관에서 제20/21대 국회의원 선거 선거구획정위원회 백서 PDF 파일을 받을 수 있다.

1.1 제20대 국회의원선거

코드
library(tidyverse)
library(gt)
library(gtExtras)

precinct_2016 <- tribble(~"총인구수", ~"지역선거구", ~"평균인구수", ~"상한인구수", ~"하한인구수",
        "51,465,228",  "246", "209,209", "278,945", "139,473")

precinct_2016_tbl <- precinct_2016 |> 
  mutate_all(parse_number)

precinct_2016_tbl |> 
  mutate(평균 = 총인구수 / 지역선거구,
         상한 = 평균 * 4/3,
         하한 = 평균 * 2/3) |> 
  gt() |> 
  gt_theme_538() |>  
  fmt_integer(columns = everything()) |> 
  tab_spanner(
    label = "평균 및 상하한 인구수",
    columns = c(
      평균인구수, 상한인구수, 하한인구수
    )
  ) |> 
  tab_spanner(
    label = "검증",
    columns = c(
      평균, 상한, 하한
    )
  )  |> 
  cols_align(align = "center") |> 
  tab_header(
    title = md("제20대 국회의원 선거구획정 인구자료"),
    subtitle = md("국회의원 선거구획정위원회")
  ) 
제20대 국회의원 선거구획정 인구자료
국회의원 선거구획정위원회
총인구수 지역선거구 평균 및 상하한 인구수 검증
평균인구수 상한인구수 하한인구수 평균 상한 하한
51,465,228 246 209,209 278,945 139,473 209,208 278,944 139,472

1.2 제21대 국회의원선거

코드
library(tidyverse)
library(gt)
library(gtExtras)

precinct_2020 <- tribble(~"총인구수", ~"선거구수", ~"평균인구수", ~"하한인구수", ~"상한인구수",
        "51,826,287", "253", "204,847", "136,565", "273,129")


precinct_2020_tbl <- precinct_2020 |> 
  mutate_all(parse_number)

precinct_2020_tbl |> 
  mutate(평균 = 총인구수 / 선거구수,
         상한 = 평균 * 4/3,
         하한 = 평균 * 2/3) |> 
  gt() |> 
  gt_theme_538() |>  
  fmt_integer(columns = everything()) |> 
  tab_spanner(
    label = "평균 및 상하한 인구수",
    columns = c(
      평균인구수, 상한인구수, 하한인구수
    )
  ) |> 
  tab_spanner(
    label = "검증",
    columns = c(
      평균, 상한, 하한
    )
  )  |> 
  cols_align(align = "center") |> 
  tab_header(
    title = md("제20대 국회의원 선거구획정 인구자료"),
    subtitle = md("국회의원 선거구획정위원회")
  ) 
제20대 국회의원 선거구획정 인구자료
국회의원 선거구획정위원회
총인구수 선거구수 평균 및 상하한 인구수 검증
평균인구수 상한인구수 하한인구수 평균 상한 하한
51,826,287 253 204,847 273,129 136,565 204,847 273,129 136,565

1.3 비교

현재시점 2023-07-30 기준 51,558,034명

코드
precincts_tbl <- precinct_2016_tbl |> 
  mutate(선거 = "제20대") |> 
  select(선거, 총인구수, 선거구수 = 지역선거구, 평균인구수, 상한인구수, 하한인구수) |> 
  bind_rows(
    precinct_2020_tbl |> 
    mutate(선거 = "제21대") |> 
    select(선거, 총인구수, 선거구수, 평균인구수, 상한인구수, 하한인구수)
  )

precincts_district_gt <- precincts_tbl |>  
  add_row(선거 = "제22대", 총인구수 = 51558034, 선거구수 = 253, 
          평균인구수 = 203786.7, 상한인구수 = 271715.6, 하한인구수 = 135857.8 ) |> 
  pivot_longer(-선거, names_to = "구분") |> 
  pivot_wider(names_from = 선거, values_from = value) |> 
  mutate(차이 = 제21대 - 제20대)  |> 
  relocate(차이, .after = 제20대) |> 
  mutate(차이2 = 제22대 - 제21대) |> 
  relocate(차이2, .after = 제21대) |>
  gt() |> 
  gt_theme_538() |> 
  tab_options(
    heading.title.font.size = px(16L),
    column_labels.font.size = px(14L),
    table.font.size = px(12L)
  ) |>   
  cols_align(align = "center") |> 
  tab_header(
    title = md("제20/21대 국회의원 선거구획정 비교"),
    subtitle = md("국회의원 선거구획정위원회")
  ) |> 
  fmt_integer(columns = -구분) |> 
  cols_label(
    차이 = md("<small>차이</small>"),
    차이2 = md("<small>차이</small>")
  )  |> 
  tab_spanner(
    label = "제21 - 20대 차이",
    columns = c(
      제20대, 차이, 제21대
    )
  ) |>  
  tab_spanner(
    label = "제22 - 21대 차이",
    columns = c(
      제21대, 차이2, 제22대
    )
  ) |> 
  tab_style(
    style = cell_text(color = "blue", size = px(13L), weight = "bold"),
    locations = cells_body(
      columns  = 차이
    )
  ) |> 
  tab_style(
    style = cell_text(color = "red", size = px(13L), weight = "bold"),
    locations = cells_body(
      columns  = 차이2
    )
  ) |> 
  tab_footnote(
    footnote = "출처: 국가통계포털(KOSIS), https://kosis.kr/search/search.do?query=인구수",
    locations = cells_column_labels(columns = 제22대)
  )  

precincts_district_gt |> 
  gtsave("images/precincts_district_gt.png")