지난 시간에
우리나라 성비는 어떻게 변했을까
를 주제로 데이터 분석을 했다.
https://aigoamigo.tistory.com/106
우리나라 성비는 어떻게 변했을까?
지난 시간에 초등학교에는 남학생이 더 많을까, 여학생이 더 많을까 를 주제로 데이터 분석을 했다. https://aigoamigo.tistory.com/105 초등학교에는 남학생이 더 많을까, 여학생이 더 많을까 우리 학급
aigoamigo.tistory.com
그러던 중 전세계적으로 성비는 어떻게 되는지 살펴보고 싶었다.
전세계 성비 변화는 인터넷을 통해 찾아볼 수 있었으나,
모평균 구간추정이란 기법을 직접 활용해보고자 분석을 진행해보았다.
데이터 가져오기 및 살펴보기
unstats.un.org에서 "Population by sex and urban/rural residence" 데이터를 가져왔다.
240개의 나라를 모두 다 가져오고자 했으나,
일일이 선택을 해야하는 번거로움이 있어 35개의 나라만 임의로 추출하였다.
만약 240개의 모든 나라를 다 데이터 분석을 했으면 전세계의 성비를 알 수 있었을 것이다.
하지만 35개의 나라만 임의 추출했기 때문에 내가 분석하게 되는건 35개의 나라의 성비이다.
35개의 나라의 성비를 바탕으로,
전세계의 성비의 값과 큰 차이가 없는지를 살펴보기 위해선 모평균의 구간추정을 해야했다.
모평균의 구간 추정(95%)이란?
여기서의 모평균은 전세계의 성비이다.
여기서의 표본평균은 35개 나라의 성비이다.
표본평균에서 모평균을 95%의 확률로 포함할 구간을 구하면,
내가 분석한 결과를 조금 더 신뢰성있게 살펴볼 수 있을 것이다.
데이터 분석하기
2001년부터 2022년까지의 35개 나라의 성비를 계산해보았다.
평균은 1.0139015317742592이었다.
모평균 구간 추정하기(95%)
이 35개 나라의 성비를 바탕으로 전세계 성비를 추정하고자 했다.
만약 240개의 나라의 데이터를 모두 다 활용했다면 이 과정은 필요가 없다.
나는 현재,
모평균도, 모분산도 알지 못하는 상태이다.
(사실 모평균을 알고 있다는 것은 이 과정이 필요가 없다는 소리다)
따라서 통계량 t를 활용해 모평균 구간을 추정해보았다.
그랬더니 그 구간은
1.00940111<= 모평균 <=1.01840196
이것의 의미는
표본평균에서 모평균을 95%의 확률로 포함할 구간은 (1.00940111 , 1.01840196)
이라는 뜻이다.
이 또한 성비 1에 가깝다.
(지난 글에서 분석했던 것처럼, 한국은 성비가 104~110까지 왔다갔다 했음)
결론 및 한계점
전세계적으로는 성비가 1에 가깝다.
하지만,
사실 이번 글과 지난 글에는 데이터의 성격이 살짝 달랐다.
지난 글에서는 한국의 "출생아 수"를 살펴보았고.
이번 글에서는 세계의 "거주자 수"를 살펴보았다.
우리는 살다보면 많은 위험에 노출된다.
남자와 여자가 죽음에 이르는 위험에노출되는 빈도와 그 정도가 다르다면, "출생아 수"와 "거주자 수"는 달라질 수 밖에 없다.
20세기 중반 이전까지의 전쟁 후 성비를 살펴보면, 성비가 100보다 비정상적으로 높은 경우(10배 이상)도 있었다.
전세계 출생아 수 데이터를 확보할 수 있으면 더욱 정확한 비교가 가능할 것이다.
우선, 정확하진 않아도 자연스러운 성비는 1에 가깝다는 것이 어느 정도 확인할 수 있었기 때문에 성비와 관련된 분석은 여기서 종료!
이 분석은 Colaboratory에서 Python을 활용해 진행했다.
구체적인 코드를 보고 실습도 해보고 싶다면, 아래의 링크로 이동하면 된다.
https://colab.research.google.com/drive/1kfUlwxIfNBRDfORJxRFoi3mTvQpyNnnJ?usp=sharing
230804_population_World.ipynb
Colaboratory notebook
colab.research.google.com
보기 편하도록 여기에도 코드를 남겨본다.
import pandas as pd
pd.set_option('display.max_rows', None)
#세계 성비
df_un = pd.read_csv("https://raw.githubusercontent.com/RaccoonTeacher/tistory/dd7b051bb9567d4e8c3d6ba87db4db6515b24375/2023_Population_UNData.csv")
#Total, Urban, Rural으로 구분됨. 이 중 Total만 추출
df_un_pre = df_un.loc[df_un["Area"]=="Total"]
#임의 선택한 나라
list_country = ['Afghanistan', 'Andorra', 'Bahamas', 'Bolivia (Plurinational State of)', 'Cabo Verde', 'China', "Democratic People's Republic of Korea", 'Denmark', 'Ecuador', 'Equatorial Guinea', 'Falkland Islands (Malvinas)', 'Finland', 'Gabon', 'Greenland', 'Haiti', 'Iceland', 'Isle of Man', 'Jamaica', 'Kazakhstan', "Lao People's Democratic Republic", 'Madagascar', 'Mexico', 'Nauru', 'Niue', 'Paraguay', 'Republic of Korea', 'Russian Federation', 'Saint Helena: Tristan da Cunha', 'Samoa', 'Singapore', 'Somalia', 'Sweden', 'Türkiye', 'United States of America', 'Zimbabwe']
df_un_pre = df_un_pre.loc[df_un_pre["Country or Area"].isin(list_country)]
#연도, 성별로 묶은 값의 합
df_un_sum = df_un_pre.groupby(["Year", "Sex"])["Value"].sum().to_frame()
#성비 계산
##2001년부터 2022까지의 데이터들만 확인
list_year = list(range(2001, 2023))
list_ratio = []
for year in list_year:
data = df_un_sum.loc[str(year)]
list_ratio.append(data.loc["Male"] / data.loc["Female"])
#그래프 그리기
import matplotlib.pyplot as plt
from matplotlib import rc
## 기본 글꼴을 NanumGothic으로 변경
rc('font', family='NanumGothic')
plt.plot(list_year, list_ratio)
plt.title("세계 성비")
plt.show()
#모평균 구간 95%의 신뢰도로 추정
from scipy.stats import t
import numpy as np
def var(frame):
global value_mean
value_mean = np.mean(list_ratio)
dof=len(frame)-1
error_sum = 0
for data in frame:
error_sum += (data-value_mean)**2
value_var = error_sum/dof
value_size = len(list_ratio)-1
return value_var, value_size
value_var, value_size = var(list_ratio)
standard_error_of_mean = np.sqrt(value_var/value_size)
L, R = t.interval(0.95, value_size, value_mean, scale=standard_error_of_mean)
print(L, R)
#표본평균에서 모평균을 95%의 확률로 포함할 구간은 (1.00940111 , 1.01840196) 이다.
'데이터 분석' 카테고리의 다른 글
지역별 Paps 등급은 어떨까? #2023 (1) | 2023.08.20 |
---|---|
전국 Paps 등급은 어떨까? #2023 (0) | 2023.08.17 |
우리나라 성비는 어떻게 변했을까? (0) | 2023.08.03 |
초등학교에는 남학생이 더 많을까, 여학생이 더 많을까 (0) | 2023.08.01 |
PAPS로 학생 군집화하여 체육시간 모둠 나누는 프로그램 만들기(ChatGPT) (5) | 2023.04.03 |
댓글