본문 바로가기
  • "You can't manage what you can't measure" Peter Drucker
데이터 분석 (with Rstudio)

대한민국 출산율 및 출생인구 동향

by Vitaminymc 2023. 9. 6.
반응형

최근 EBS Documentary의 캘리포니아 법대 조앤 윌리엄스 교수의 "대한민국 완전히 망했네요."라는 영상이 여러 뉴스를 통해서 보도되었다.
윌리엄스 교수의 표정보다, 이후에 나온 분들의 말처럼 대한민국의 구조적 문제는 정말 심각하다.

취업난, 결혼 연기/포기, 난임, 저출산, 사교육비, 주택가격 상승, 가계 대출 증가, 노령화, 국민연금 고갈, 세금 투입, 세수 부족,...

배부른 정치인과 국정 책임자들은 베이비 붐 시대의 낡은 이념 논쟁만 할 뿐,
인구 절벽이라는 현재와 미래 문제에 관심도 없고, 대책도 없는 것 같아서 답답하다.

정책은 없고 놀고먹으며, 논쟁과 변명만 하면서 국민 혈세를 낭비하는 것은 정말 없는 게 나을 것 같다.

0.78 세계 최저 수준의 출산율에 그친 대한민국의 현실

조앤 윌리엄스 / 캘리포니아대 법대 명예교수

"대한민국 완전히 망했네요. 와!  그 정도로 낮은 수치의 출산율은 들어본 적도 없어요. 
 (0.78명이라는 출산율은) 엄청나네요."

알렉스 와인렙 /  이스라엘 사회정책연구소 선임연구원

"(한국의 저출생은) 제게 아주 강한 메시지를 줍니다. (한국 사회에) 심각한 구조적 문제가 있다고요."

군나르 안데르손 / 스톡홀름대 인구통계학 교수

"출산율이 회복된다고 해도  (인구) 비율을 맞추기 어렵기 때문에 (한국) 사회에 있어 아주 큰 문제죠.
 사회의 균형이 비뚤어졌다는 것뿐만이 아니라, 개인에게도 문제예요.

미국 전문가가 탄식한 금치 못한 이유

│초저출생, 그 원인은 무엇일까?│다큐멘터리 K

https://youtu.be/mLlXrUweonA?si=xQnW5CoQgVl2J5dX 

EBS Documentary 초저출생

 

R 분석 (Rstudio)

통계청 국가통계포털에 제공하는 출산율 및 출생인구 데이터를  R을 통해서 분석하다.
그래프를 통해서 보니, 몇 년 후 학생, 선생님, 학교 감소를 시작으로
직접 관련된 서비스 수요의 감소, 간접 관련 서비스와 유통, 제조 매출의 감소, 일자리 감소 등
도미노 현상과 악순환을 생각하면 절망적이다.
지금이라도 국가와 국민의 모든 힘을 집중해야 할 것 같다.

2023년 출생아 수는 23만명, 전년대비 1만9천2백명 감소, 합계출산율은 0.72명  (통계청 보도자료 2024.02.28)

 

출산율 추이

https://kosis.kr/statHtml/statHtml.do?orgId=101&tblId=DT_1B8000G&conn_path=I3 
출산율 : 가임여성 1명당 명
모(母)의 연령별출산율 : 해당연령 여자인구 1천명당 명

시점시도별합계출산율모(母)의 연령별 출산율
15-1920-2425-2930-3435-3940-4445-49
Y199300 전국1.6544.471.9176.563.213.520.2
Y200200 전국1.1782.726.8111.47516.92.50.2
Y201200 전국1.2971.81677.4121.9394.90.2
Y202200 전국0.7780.44.124.073.544.180.2

합계 출산율은 많은 언론 보도에서 제시된 숫자와 같이 2022년 0.78명입니다.
1993년 1,654와 비교하면, 약 1명 이 줄었습니다. (통계적으로 1993년에 1~2명을 출산)
모의 연령별 출산율을 보면, 알고 있는 것처럼 출산율은 낮아지고, 출산 연령은 높아진 것을 알 수 있습니다.

연도1993199419951996199719981999200020012002
출산율()1.6541.6561.6341.5741.5371.4641.4251.4801.3091.178
연도2003200420052006200720082009201020112012
출산율()1.1911.1641.0851.1321.2591.1921.1491.2261.2441.297
연도2013201420152016201720182019202020212022
출산율()1.1871.2051.2391.1721.0520.9770.9180.8370.8080.778
연도별 출산율

보건복지부 보도자료 : https://www.mohw.go.kr/ 

 
2005년 1.085에서 2006년 1.132, 2007년 1.259로 증가한 사례가 있다. 
보건복지부 2007년 보도 자료(2017.5.5)에 따르면, 2005년 1.08명에서 2006년 1.13명으로 증가는 2000년 밀레니엄 효과로 인한 증가를 제외하면 가장 큰 폭으로 증가했으며, 2003년 이후 혼인건수 증가와 이혼건수 감소로 인한 가임기 결혼여성의 증가가 출생아수 증가에 기여한 것으로 분석했다.
2008년 보도 자료(2008.2.6)에 따르면, 2006년 1.13명에서 2007년 1.26명으로 상승한 이유는 ①결혼․출산에 대한 인식 개선, ②IMF 외환위기 이후 경제안정, ③범국가적 대책 추진에 대한 기대심리 등이 복합적으로 작용한 결과로 분석했다.
2012년 보도 자료(2012.2.27)에 따르면, 2011년 출산율이 2010년에 이어 증가한 이유는 2010년 혼인건수 증가(16.3천 건), 다자녀 지원 정책(주택특별공급, 전기요금 감액 등)으로 분석했다.
복지부 분석이라 100% 정확하지 않고, 과거와 지금과 다르겠지만, 출산율 증가를 위해서는
정부와 개인이 다 함께 합심해야 하고, 경제가 안정화되어야 한다는 생각해 볼 수 있다.
 

출생인구(출생아) 추이

https://kosis.kr/statHtml/statHtml.do?orgId=101&tblId=DT_1B8000G&conn_path=I3 

연도1981198219831984198519861987198819891990
출생아
(만명)
86.7  84.8 76.9 67.5 65.5 63.6 62.4  63.3 63.9  65.0
연도1991199219931994199519961997199819992000
출생아
(만명)
 70.9 73.1  71.6  72.1  71.5 69.1  67.5  64.2  62.1 64.0
연도2001200220032004200520062007200820092010
출생아
(만명)
 56.0 49.7  49.5  47.7  43.9  45.2  49.7 46.6 44.5 47.0
연도2011201220132014201520162017201820192020
출생아
(만명)
47.1 48.5  43.6  43.5 43.8  40.6 35.8 32.7 30.3  27.2
연도20212022        
출생아
(만명)
26.1  24.9         
연도별 출생인구(명)

2002년부터 50만명 이하로 줄어들고, 2016변부터는 약 40만명 이하로 줄어들었고, 2022년 약 25만명 이다.
2020년 27만 명, 2021년 26만 명, 2022년 25만 명으로 2000년 64만 명, 2001년 56만 명, 2002년 50만 명대비 약 절반으로 줄었다.
앞으로 20년 후, 현재 대학생 및 20대 직장인은 지금보다 절반이 줄어든다는 의미이고,
2022년 출산율이 유지된다고 가정하면, 같은 출산율이라고 헤도 인구 감소 상황은 더 심각해진다.
지금도 서울에 문 닫는 학교가 있는데, 몇 년후에는 이러한 상황이 연달아 발생할 것 같다.
 - 50만 명 ÷ 2 (남자, 여자 각 50% 적용) X 0.8 = 20만 명
 - 25만 명 ÷ 2 (남자, 여자 각 50% 적용) X 0.8 = 10만 명 

 

관련기사 :  서울 학생, 지난해보다 2만명 줄었다…초등학교 1곳 폐교
https://v.daum.net/v/20230727081802828

Rstudio 코드

출산율

birth_rate <- read_xlsx("시도_합계출산율__모의_연령별_출산율_20230905001725.xlsx")

names(birth_rate)
 [1] "TIME 시점"                    "A 시도별"                    
 [3] "T1 합계출산율"                "T2 모의 연령별출산율:15-19세"
 [5] "T3 20-24세"                   "T4 25-29세"                  
 [7] "T5 30-34세"                   "T6 35-39세"                  
 [9] "T7 40-44세"                   "T8 45-49세"  
names(names(birth_rate)birth_rate)
 [1] "year"                         "city"                        
 [3] "total_rate"                   "T2 모의 연령별출산율:15-19세"
 [5] "T3 20-24세"                   "T4 25-29세"                  
 [7] "T5 30-34세"                   "T6 35-39세"                  
 [9] "T7 40-44세"                   "T8 45-49세"    
table (is.na(birth_rate$year))
FALSE  TRUE 
       30   510 
# 결측치 대체
for (i in 2:length(birth_rate$year)) {
  if (is.na(birth_rate$year[i])) {
    birth_rate$year[i] <- birth_rate$year[i - 1]
  }
}


table (is.na(birth_rate$year))
FALSE 
  540 
table(birth_rate$city)
          00 전국     11 서울특별시     21 부산광역시     22 대구광역시 
                   30                   30                        30                     30 
    23 인천광역시     24 광주광역시     25 대전광역시     26 울산광역시 
                   30                   30                       30                      30 
29 세종특별자치시         31 경기도         32 강원도       33 충청북도 
                  30                    30                      30                      30 
      34 충청남도       35 전라북도       36 전라남도       37 경상북도 
                 30                     30                     30                      30 
      38 경상남도 39 제주특별자치도 
                30                     30 
birth_total_rate <- birth_rate %>%
  filter (city == "00 전국") 

birth_total_rate$year <-as.numeric(substr(birth_total_rate$year, 2, 5))

birth_total_rate$total_rate <-as.numeric(birth_total_rate$total_rate)

birth_total_rate %>%
  ggplot (aes(x=year, y=total_rate)) + 
  geom_rect(xmin = 2018, xmax = Inf, 
            ymin = -Inf , 
            ymax = Inf  , fill="lightblue" ) +
  geom_line() + geom_point(col="blue") +
  labs(x="연도" , y="출산율(명)") +
  geom_text(aes(label= round(total_rate, 2) ), size = 3, color = 'black', vjust = -1.2)+
  geom_vline(xintercept = 2018 , col = "red", linetype = 'dotted', linewidth = 1) +
  theme_minimal()  +
  scale_x_continuous(breaks = seq(1993, 2022, by = 3)) 

출생인구(출생아) 수

popul_kr <- read_excel("인구동향.xlsx", sheet="데이터")  

popul_kr$value <- as.numeric(popul_kr$value)

#출생 인구 Filtering
birth_kr <- popul_kr %>%
  filter (region_cd == "00" & stat_cd == "10")

#period column 변경
birth_kr$yy <- substr (birth_kr$period, 1, 4)  #출생년도
birth_kr$mm <- substr (birth_kr$period, 6, 7) #출생월

birth_kr_by_year <- birth_kr %>%
  group_by(yy) %>%
  summarise(yy_sum = sum(value)) 

birth_kr_by_year$yy = as.numeric(birth_kr_by_year$yy)

hp = max(birth_kr_by_year$yy_sum)
lp = min(birth_kr_by_year$yy_sum)

birth_kr_by_year %>%
  ggplot(aes(x = yy, y = yy_sum) ) +
  geom_rect(xmin = 2016, xmax = Inf, 
            ymin = -Inf , 
            ymax = Inf  , fill="lightblue" ) +
  geom_rect(xmin = 2002, xmax = 2016, 
            ymin = -Inf , 
            ymax = Inf  , fill="lightgrey" ) + geom_line() +geom_point(size=2, col='blue') +
  geom_segment(x=1981+5, y=hp, xend=1981+1, yend=hp, arrow = arrow(length = unit(5, 'mm')), col='blue', linewidth = 1) +
  geom_text(x= 1991, y=hp, label = paste0 ('max : ', hp ), col = 'darkblue', size=5) +
  geom_segment(x=2022-5, y=lp, xend=2022-1, yend=lp, arrow = arrow(length = unit(5, 'mm')), col='red', linewidth = 1) +
  geom_text(x= 2011, y=lp, label = paste0 ('min : ', lp ), col = 'red', size=5) +
  geom_vline(xintercept = 2016 , col = "red", linetype = 'dotted', linewidth = 1) + 
  scale_y_continuous(labels = scales::comma) +
  labs(x="연도_월" , y="연간 출생아수") +
  scale_x_continuous(breaks = seq(1981, 2022, by = 3)) 

 

728x90