R 코드: 국내 인구동향 조사
# KOSIS(통계청)에서 데이터를 통계표에서 설정하여 다운받아 사용합니다.
- 통계표(연도·항목) 설정합니다. ( 인구동향데이터 다운로드 )
- 엑셀(또는 CSV) 다운로드 후, CSV로 저장합니다.
#########################
# 1) 데이터 불러오기
#########################
# 연도(year), 조사망률(cdr), 합계출산률(tfr), 혼인건수(marn), 기대수명(life_expec)
# CSV 파일을 같은 작업 디렉터리(data)에 넣고 경로설정합니다.
setwd(c:/data)
stdata <- read_csv("population.csv")
# 데이터 확인
head(stdata)
########################
# 2) 데이터 전처리
########################
# 3.1 결측치(Missing Value) 확인합니다.
> colSums(is.na(stdata))
year cdr tfr marn life_expec
0 0 0 0 0
# 3.3 자료형 확인합니다.
> str(stdata)
'data.frame': 54 obs. of 5 variables:
$ year : int 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 ...
$ cdr : num 8 7.2 6.3 7.8 7.2 7.7 7.4 6.8 6.8 6.4 ...
$ tfr : num 4.53 4.54 4.12 4.07 3.77 3.43 3 2.99 2.64 2.9 ...
$ marn : int 295137 239457 244780 259112 259604 283226 285910 303156 343013 353824 ...
$ life_expec: num 62.3 62.7 63.1 63.5 63.9 64.2 64.6 65 65.3 65.6 ...
######################
# 3) 요약 통계 및 파악
######################
# 4.1 연도를 10년단위로 묶어줍니다.(파생변수 생성)
stdata$year_c <- cut(stdata$year, breaks=c(1969,1980,1990,2000,2010,2020,2030),
include.lowest=T, right=F,
labels=c("1970s","1980s","1990s","2000s","2010s","2020s"))
> head(stdata)
year cdr tfr marn life_expec year_c
1 1970 8.0 4.53 295137 62.3 1970s
2 1971 7.2 4.54 239457 62.7 1970s
3 1972 6.3 4.12 244780 63.1 1970s
4 1973 7.8 4.07 259112 63.5 1970s
5 1974 7.2 3.77 259604 63.9 1970s
# 4.2 10년단위 연도별 요약
> tapply(stdata$tfr, stdata$year_c, mean) #합계출산율
1970s 1980s 1990s 2000s 2010s 2020s
3.5990 1.9460 1.5984 1.2139 1.1517 0.7860
> tapply(stdata$life_expec, stdata$year_c, mean) #기대수명
1970s 1980s 1990s 2000s 2010s 2020s
64.020 68.640 73.640 78.020 81.810 83.325
> tapply(stdata$cdr, stdata$year_c, mean) #조사망률
1970s 1980s 1990s 2000s 2010s 2020s
7.160 6.070 5.350 5.070 5.410 6.575
# 연도별 상관계수
> cor(stdata[ , c(1,2,3,4,5)])
year cdr tfr marn life_expec
year 1.0000000 -0.5543008 -0.86542787 -0.37869728 0.9955878
cdr -0.5543008 1.0000000 0.73866267 -0.35559345 -0.6197167
tfr -0.8654279 0.7386627 1.00000000 -0.03352064 -0.8800023
marn -0.3786973 -0.3555934 -0.03352064 1.00000000 -0.3252700
life_expec 0.9955878 -0.6197167 -0.88000233 -0.32527000 1.0000000
#######################
# 4) 시각화
#######################
# 5.1 연도별 조망률, 합계출산율, 혼인건수, 기대수명에 대한 산점도
plot(stdata[ , c(1,2,3,4,5)])plot(stdata[ , c(1,2,3,4,5)])
# 5.2 10년단위별 조망률, 합계출산율, 혼인건수, 기대수명의 그래프
barplot(tapply(stdata$tfr, stdata$year_c, mean),
main="연도별 합계출산률")
barplot(tapply(stdata$cdr, stdata$year_c, mean),
main="연도별 조사망률")
barplot(tapply(stdata$marn, stdata$year_c, mean),
main="연도별 혼인건수")
barplot(tapply(stdata$life_expec, stdata$year_c, mean),
main="연도별 기대수명")
###################
# 5) 결론 및 활용
###################
# 연도별 출산률과 사망률을 살펴보면, 일반적으로 출산률이 하락하는 추세를 보이는 반면
# 사망률은 점진적으로 상승하는 모습을 보입니다. 이러한 변화는 고령화 현상의 심화,
# 혼인율 및 사회경제적 요인 등에서 기인할 수 있습니다.
#
# - 출산률이 낮아지면, 향후 노동력 부족 문제나 인구 구조 불균형 등이 발생할 가능성이 높습니다.
# - 사망률이 상승한다는 것은 인구가 고령화되면서 자연스럽게 사망자 수가 늘어날 수 있음을 시사합니다.
#
# 결과적으로 전체 인구 규모가 일정 수준에서 정체되거나 감소하는 추세를 보일 수 있으며,
# 이는 복지 정책, 고용 정책, 교육 제도 등에 큰 영향을 미칠 수 있습니다.