개발로그필름

두 번째 질문, 성별에 따른 수면 시간과 수면의 질 차이는? 본문

데이터분석가

두 번째 질문, 성별에 따른 수면 시간과 수면의 질 차이는?

yuullog 2024. 12. 17. 14:58
728x90
반응형
SMALL

이번 분석에서는 성별에 따라 수면 시간수면의 질에 어떤 차이가 있는지를 확인했다.

특히 평균표준편차를 계산해 그룹 간의 차이를 정량적으로 비교하고, 다양한 시각화 그래프를 사용해 데이터의 분포와 변동성까지 시각적으로 분석했다.

1. 분석 목표와 방법

평균: 그룹의 중심값을 확인해 대다수 사람들이 어느 정도의 수면 시간을 가지고 있는지 파악.

표준편차: 각 그룹 내에서 데이터가 평균값을 기준으로 얼마나 흩어져 있는지를 확인.

표준편차가 낮다 → 평균값 주변에 몰려 있다. 일관된 패턴.

표준편차가 높다 → 평균값에서 멀리 떨어진 값들이 많다. 변동성이 크다.

 

2. 데이터 준비 및 코드

먼저 성별(Gender)을 기준으로 데이터를 그룹화한 후, 각 그룹의 평균과 표준편차를 계산했다.

relevant_data = sleep_data[['Sleep Duration', 'Quality of Sleep', 'Gender']]

summary_by_gender = relevant_data.groupby('Gender').agg(
    Sleep_Duration_Mean=('Sleep Duration', 'mean'),
    Sleep_Duration_Std=('Sleep Duration', 'std'),
    Sleep_Quality_Mean=('Quality of Sleep', 'mean'),
    Sleep_Quality_Std=('Quality of Sleep', 'std')
)

summary_by_gender

결과 해석

1. 수면 시간

여성의 평균 수면 시간은 7.23시간, 남성은 7.04시간 → 여성의 수면 시간이 약 11분 더 길다.

표준편차는 여성 0.88, 남성 0.69여성의 수면 시간 변동성이 더 크다. 즉, 남성은 더 일관된 수면 패턴을 유지한다.

2. 수면의 질

여성의 평균 수면 질은 7.66, 남성은 6.97 → 여성의 수면 질이 약 0.69 더 높다.

표준편차는 여성 1.28, 남성 0.99 → 여성의 수면 질도 변동성이 더 크다.

 

데이터 상으로 해석한 결과이다. 그렇다면 왜 여성의 변동성이 더 클까? 그냥 내 사회 데이터 기반으로 추측을 해보건데

여성의 경우는 사회적 /생리적 요인(호르몬 변화, 업무 가사 분담 등)이 수면에 더 큰 영향을 미쳤을 것이라고 개인적으로 추측해보았고

남성의 경우에는 일정한 수면 패턴을 유지하지만 수면의 질이 상대적으로 낮은것으로 보아 이는 생활 습관이나 스트레스 수준과 관련이 있을 것이라고 짐작해보았다.

 

4. 시각화 분석

4.1 막대그래프 (Bar Plot)

막대그래프를 통해 성별 그룹의 평균값과 변동성(에러바)를 시각화했다.

막대그래프를 사용한 이유는 각 성별 그룹의 수면 시간과 수면의 직의 평균값을 명확하게 보고 싶기 때문이었다

하지만 평균만 보여주기 때문에 데이터의 세부적인 분포나 이상치는 다음 시각화를 통해 알아보았다.

 

import matplotlib.pyplot as plt
fig, axes = plt.subplots(1, 2, figsize=(12, 6))

# 1. 성별 평균 수면 시간 막대 그래프
axes[0].bar(summary_by_gender.index, summary_by_gender['Sleep_Duration_Mean'], 
            yerr=summary_by_gender['Sleep_Duration_Std'], capsize=5, color=['skyblue', 'lightgreen'])
axes[0].set_title('Average Sleep Duration by Gender')
axes[0].set_ylabel('Sleep Duration (hours)')
axes[0].set_xlabel('Gender')

# 2. 성별 평균 수면의 질 막대 그래프
axes[1].bar(summary_by_gender.index, summary_by_gender['Sleep_Quality_Mean'], 
            yerr=summary_by_gender['Sleep_Quality_Std'], capsize=5, color=['orange', 'lightcoral'])
axes[1].set_title('Average Quality of Sleep by Gender')
axes[1].set_ylabel('Quality of Sleep (scale)')
axes[1].set_xlabel('Gender')

# 레이아웃 조정 및 표시
plt.tight_layout()
plt.show()

 

에러바란 무엇일까?

이번 분석을 통해 막대그래프를 사용할 때 함께 표시한 에러바(Error Bar)에 대해 새롭게 알게 되었다.

에러바는 데이터의 불확실성이나 변동성을 시각적으로 보여주는 도구로, 주로 표준편차, 표준오차, 또는 신뢰 구간을 나타낼 때 사용된다.

막대그래프나 산점도 위에 그려지는 으로, 데이터의 변동성을 시각적으로 나타낸다.

표준편차: 데이터가 평균값을 기준으로 얼마나 흩어져 있는지를 나타낸다.

에러바가 짧다 → 데이터가 평균값 주변에 몰려 있다 → 일관성이 높다.

에러바가 길다 → 데이터가 평균값에서 멀리 떨어진 값이 많다 → 변동성이 크다.

 

에러바는 어떻게 그려지는가?

예시: 평균 수면 시간

여성의 평균 수면 시간은 7.23시간, 표준편차는 0.88

남성의 평균 수면 시간은 7.04시간, 표준편차는 0.69

 

막대그래프 위에 에러바가 그려지는 과정:

1. 막대의 꼭대기를 기준으로 시작한다.

2. 위로 표준편차 값만큼 선을 긋는다. (여성은 +0.88, 남성은 +0.69)

3. 아래로 표준편차 값만큼 선을 긋는다.

4. 에러바 끝에 수평선(capsize)을 추가해 선의 끝을 명확하게 한다.

이렇게 하면 평균과 함께 데이터의 변동성을 시각적으로 한눈에 확인할 수 있다.

 

에러바를 통해 알 수 있는 것

1. 여성:

수면 시간과 수면 질의 평균값이 남성보다 높다.

에러바가 길다 → 변동성이 크고, 개인 간 차이가 많다는 것을 의미한다.

2. 남성:

수면 시간과 수면 질의 평균값은 여성보다 낮지만, 에러바가 짧다 → 데이터가 평균값 주변에 몰려 있어 더 일관된 패턴을 보인다.

 

막대그래프를 통해 살펴본 데이터분석

여성은 수면 시간과 수면 질이 더 높지만 변동성이 크고, 남성은 낮은 수면 질이지만 일정한 패턴을 유지한다는 것을 확인할 수 있었다. 

끝! 🚀

 

4.2 박스플롯 (Box Plot)

import matplotlib.pyplot as plt

fig, axes = plt.subplots(1, 2, figsize=(12, 6))

# 1. 수면 시간 박스플롯
relevant_data.boxplot(column='Sleep Duration', by='Gender', ax=axes[0], grid=False)
axes[0].set_title('Sleep Duration by Gender')
axes[0].set_xlabel('Gender')
axes[0].set_ylabel('Sleep Duration (hours)')

# 2. 수면의 질 박스플롯
relevant_data.boxplot(column='Quality of Sleep', by='Gender', ax=axes[1], grid=False)
axes[1].set_title('Quality of Sleep by Gender')
axes[1].set_xlabel('Gender')
axes[1].set_ylabel('Quality of Sleep (scale)')

# 불필요한 상단 제목 제거 및 표시
plt.suptitle('')
plt.tight_layout()
plt.show()

박스플롯(Boxplot)을 사용해 성별에 따른 수면 시간수면의 질데이터 분포와 변동성을 시각적으로 확인했다.

박스플롯은 데이터의 중앙값, 사분위수, 수염, 이상치를 한눈에 보여주기 때문에 그룹 간 비교에 매우 유용하다.

 

박스플롯 구성 요소

1. 중앙값(Median): 데이터를 정렬했을 때 정확히 중간에 위치한 값. → 박스 중앙의 선으로 표시된다.

2. 사분위수(Quartiles): 데이터를 4등분했을 때의 값.

Q1 (1사분위수): 하위 25% 지점 (박스의 아래 경계선)

Q3 (3사분위수): 상위 25% 지점 (박스의 위 경계선)

IQR (사분위 범위): Q3 - Q1 → 중간 50% 데이터를 나타내는 범위

3. 수염(Whiskers):

Q1에서 1.5 × IQR만큼 아래로 확장한 값

Q3에서 1.5 × IQR만큼 위로 확장한 값

이 범위 내에 있는 값들은 정상 데이터로 간주된다.

4. 이상치(Outliers): 수염 바깥에 있는 값들로, 다른 값들과 멀리 떨어진 데이터. → 동그란 점으로 표시된다.

 

박스플롯 분석 및 결과

수면 시간

여성

중앙값은 약 7.2시간으로 남성보다 높다.

박스 길이가 길어 데이터의 변동성이 크다는 것을 알 수 있다.

수염도 남성과 비슷한 길이로 확장되어 있지만, 이상치(outlier)는 없다.

남성

중앙값은 약 7.0시간으로 여성보다 약간 낮다.

박스 길이가 여성보다 짧아 수면 시간이 더 일관되게 분포한다.

수염의 길이도 여성과 유사하며, 이상치는 없다.

 

수면의 질

여성

중앙값은 7.66으로 남성보다 높다.

박스 길이와 수염이 길어 변동성이 크고 개인 간 차이가 많다는 것을 보여준다.

남성

중앙값은 6.97로 여성보다 낮다.

박스 길이가 짧아 수면 질이 일관되게 유지되고 있다.

 

결론

박스플롯을 통해 성별 그룹 간의 수면 시간과 수면 질을 분석한 결과는 다음과 같다

1. 여성

평균적으로 수면 시간과 수면 질이 남성보다 높다.

하지만 변동성이 커서 개인 간 차이가 많다. 즉, 불규칙한 수면 패턴이 나타난다.

2. 남성

평균적으로 수면 시간과 수면 질이 여성보다 낮다.

하지만 변동성이 작아 일관된 패턴을 유지한다.

 

개인적 해석과 느낀 점

박스플롯을 사용해 데이터를 시각화해보니 그룹 간의 분포와 변동성을 직관적으로 확인할 수 있었다. 특히 여성은 평균값이 높지만 변동성이 크다는 점이 눈에 띄었다. 이 결과를 바탕으로 다음과 같은 추측을 해보았다:

여성: 생리적 요인(호르몬 변화), 사회적 요인(가사와 업무의 병행 등)이 수면 시간과 질에 영향을 미칠 수 있다.

남성: 생활 패턴이 상대적으로 일정하지만, 낮은 수면 질은 스트레스나 생활 습관 때문일 수 있다.

박스플롯은 단순히 평균값만 보는 게 아니라 데이터의 변동성, 중앙값, 이상치까지 시각적으로 파악할 수 있었다. 특히 그룹 간의 차이를 비교할 때 매우 효과적인 도구라는 것을 다시 한번 느꼈다. 이번 분석을 통해 시각화의 중요성을 다시 실감했다!

 

4.3 바이올린 플롯 (Violin Plot)

바이올린 플롯을 통해 데이터의 분포와 밀도를 시각화했다.

밀도 분포를 통해 단순히 평균이나 변동성이 아니라 데이터가 어떻게 분포하는지 이해할 수 있었다. 

import seaborn as sns
import matplotlib.pyplot as plt

fig, axes = plt.subplots(1, 2, figsize=(12, 6))

# 1. 수면 시간 바이올린 플롯
sns.violinplot(x='Gender', y='Sleep Duration', data=relevant_data, hue='Gender', 
               palette='muted', ax=axes[0], legend=False)
axes[0].set_title('Sleep Duration Distribution by Gender')
axes[0].set_xlabel('Gender')
axes[0].set_ylabel('Sleep Duration (hours)')

# 2. 수면의 질 바이올린 플롯
sns.violinplot(x='Gender', y='Quality of Sleep', data=relevant_data, hue='Gender', 
               palette='pastel', ax=axes[1], legend=False)
axes[1].set_title('Quality of Sleep Distribution by Gender')
axes[1].set_xlabel('Gender')
axes[1].set_ylabel('Quality of Sleep (scale)')

# 레이아웃 조정 및 표시
plt.tight_layout()
plt.show()

 

바이올린 플롯은 데이터의 분포와 밀도를 시각적으로 보여주는 강력한 도구이다. 특히 그래프의 폭(두께)을 통해 특정 값 주변에 데이터가 얼마나 밀집되어 있는지 직관적으로 확인할 수 있다.

분석 결과

1. 여성

그래프의 폭이 넓고 고르게 퍼져 있다.

이는 데이터가 특정 값에 몰리지 않고 다양한 값에 분포한다는 의미 → 변동성이 크고 개인 간 차이가 많다.

즉, 여성은 수면 시간과 수면 질이 평균적으로 높지만, 수면 패턴이 불규칙하고 다양하다.

2. 남성

그래프의 폭이 좁고 날씬한 형태를 보인다.

이는 데이터가 특정 값 주변에 집중되어 있다는 의미 → 변동성이 작고 일관성이 높다.

즉, 남성은 수면 시간과 수면 질이 평균적으로 낮지만, 수면 패턴이 규칙적이고 일관된다.

 

결론

여성: 수면 시간과 수면 질이 평균적으로 높지만 변동성이 크고 다양한 패턴을 보인다.

남성: 수면 시간과 수면 질이 평균적으로 낮지만 일관된 패턴을 유지한다.

이 분석을 통해 성별에 따른 수면 습관과 수면 질의 패턴이 다르다는 것을 확인할 수 있었다.

여성: 다양한 수면 패턴 → 불규칙적

남성: 규칙적인 수면 패턴 → 일관적

바이올린 플롯은 평균과 변동성뿐만 아니라 데이터의 분포 형태까지 시각적으로 보여준다는 점에서 매우 유용한 시각화 도구라는 것을 알 수 있었다.

 

 

 

반응형
LIST