모집단을 조사하든, 표본을 조사하든, 이는 모두 데이터를 분석하는 과정이다. 이번에는 데이터에 대한 기본 개념과 데이터의 유형별로 정리하고 요약하는 방법을 알아보자. 앞서 1장에서 보았던 데이터들은 수치로 표현되었다. 하지만 신약과 위약 혹은 여성과 남성처럼 범주로 나타나는 데이터도 있다. 데이터의 유형에 따라 분석방법이 달라지기 때문에, 데이터를 수집할 때나 분석할 때 데이터의 유형을 명확히 파악하는 것이 중요하다.


데이터의 유형

 

데이터는 일반적으로 수치형 데이터범주형 데이터로 구분된다. 숫자로 나타낼 수 있는 데이터를 수치형 데이터라고 한다. 반면 동전의 앞/뒤, MBTI의 INFP, ENFJ 등과 같이 범주형으로 나타낼 수 있는 데이터를 범주형 데이터라고 한다.

 

1. 수치형 데이터

  • 숫자로 나타낼 수 있는 데이터로, 대소 관계가 있고, 양을 계산할 수 있다.
  • 분류:
    1. 이산형 데이터
      • 관측 가능한 값이 셀 수 있는 수치형 데이터.
      • 예를 들어, 수강생 수, 동전 던지기 횟수 등이 있다
    2. 연속형 데이터
      • 관측 가능한 값이 연속적인 수치형 데이터.
      • 예를 들어, 키, 몸무게, 온도 등이 있다.

2. 범주형 데이터

  • 숫자가 아닌 범주로 나타낼 수 있는 데이터.
  • 분류:
    1. 순위형 데이터
      • 범주 간에 순서가 있는 데이터.
      • 예를 들어, 잘한다/보통이다/못한다, 만족도 조사(매우 만족/만족/불만족) 등이 있다.
    2. 명목형 데이터
      • 범주 간에 순서가 없는 데이터.
      • MBTI(INFP, ENFJ 등), 동전(앞면/뒤면) 등이 있다

 

데이터 유형을 올바르게 이해하면, 적합한 분석 방법을 선택할 수 있다.

예를 들어,

  • 수치형 데이터평균이나 표준편차와 같은 기술통계로 분석할 수 있고
  • 범주형 데이터빈도비율을 활용한 기술통계로 분석할 수 있다.

 

변수

변수란, 관측값들의 특성이나 성질을 의미한다. 변수(성별, 키, 몸무게)는 대상(사람, 물체, 사건 등)에 따라 변화하거나 달라질 수 있는 값이다. 앞으로 수치형 변수, 범주형 변수 등으로 구분하여 사용할 것이다.


데이터의 경향을 파악하는 두 가지 방법

아무런 처리를 하지 않은 원자료를 단순히 관찰하는 것만으로는 데이터의 전체적인 경향을 파악하기 어렵다. 따라서 데이터를 요약하거나 시각화하여 한 눈에 파악할 수 있는 방법이 필요하다. 이러한 과정을 통해 데이터의 분포와 특성을 보다 효과적으로 분석할 수 있다.  데이터 분석 과정에서는 먼저 데이터의 유형을 파악한 뒤, 데이터가 어떻게 분포되어 있는지를 특정 수치 통해 확인하거나 그래프 등으로 시각화하여 대략적인 경향을 파악하는 것이 일반적이다.

 

1. 데이터의 경향을 정량적으로 측정하기

평균값과 같이 데이터를 요약하여 특성을 간단히 나타내는 수치를 기술통계량이라고 한다. 기술통계량은 주로 수치형 변수를 대상으로 계산하며, 범주형 변수의 경우, 범주의 빈도나 비율을 활용하여 데이터를 요약하고 설명할 수 있다.

 

기술통계량은 데이터의 특성을 한눈에 보여줄 수 있지만, 하나의 수치로 요약하는 과정에서 일부 정보가 손실될 수 있다.

예를 들어, 평균값은 데이터의 중심 경향을 나타내지만, 데이터가 얼마나 퍼져 있는지는 알 수 없다. 따라서 데이터의 퍼짐 정도를 나타내는 분산이나 표준편차와 같은 다른 통계량을 함께 살펴보아야 한다. 이처럼 기술통계량은 단일 통계량이 아닌 다양한 통계량을 종합적으로 살펴보는 것이 중요하다.  

 

기술통계량은 크게 다음 두 가지로 구분할 수 있다.

  1.  대푯값 : 데이터의 중심을 나타내는 값으로, 평균값, 중앙값, 최빈값이 있다.
  2. 퍼짐 정도 : 데이터가 흩어져 있는 정도를 나타내는 값으로 범위, 분산, 표준 편차, 사분위수가 있다

대표값

 

표본평균은 전체 관측값들을 모두 더한 후 관측값의 개수로 나누어 계산되며, 데이터의 전체적인 경향을 대변할 수 있는 대표값이다. 하지만 극단적인 값에 크게 영향을 받는다는 단점이 있다. 따라서 데이터에 극단값이 포함된 경우, 표본평균만을 사용하는 것은 적절하지 않을 수 있다.

평균값 구하기

 

중앙값을 사용하면 극단값의 영향을 줄일 수 있다. 중앙값은 데이터 값들을 크기 순으로 정렬했을 때 가운데에 위치한 값으로, 극단값에 영향을 받지 않는다는 장점이 있다. 이는 특히 데이터가 비대칭적이거나 이상치가 포함된 경우에 유용하다. 표본 개수가 짝수일 때는 가운데 두 값의 평균값을 사용한다. 가운데 위치한 데이터일 뿐이기에 다른 데이터의 정보는 손실된다는 단점이 있다.

 

다음으로 최빈값은 데이터에서 가장 빈도가 높은 값으로 정의된다. 최빈값은 범주형 변수에서 유용하게 활용되며, 연속형 변수(주로 이산형)에서도 데이터의 빈도를 나타낼 때 사용된다. 하지만 최빈값은 데이터의 분포를 완전히 설명하지 못할 수 있고, 하나 이상의 최빈값이 존재할 수도 있다.

 

표본평균과 중앙값, 최빈값 비교

분포별 평균값, 중앙값, 최빈값

 

수입 분포와 같은 꼬리가 긴 비대칭 분포에서는 평균값과 중앙값 사이에 차이가 발생한다. 예를 들어, 왼쪽의 그래프처럼 극단적으로 높은 수입을 가진 소수의 데이터(고소득층)가 포함된 경우, 평균값은 중앙값보다 더 크게 나타난다. 이는 평균값이 극단값의 영향을 많이 받기 때문이다. 이러한 상황에서는 중앙값이 대다수 데이터의 대표값으로 더 적합할 수 있다.

반면, 정규분포처럼 좌우가 대칭인 분포에서는 평균값, 중앙값, 최빈값이 모두 비슷할 것이다. 이는 데이터가 대칭적으로 분포되어 있어 각 값이 데이터의 중심을 잘 나타내기 때문이다.

 

아래 실습 코드들을 실행시키기 전 필요 라이브러리들을 불러오자

import numpy as np
import pandas as np
import matplotlib.pyplot as plt
import seaborn as sns
from matplotlib import rc
# 한글 폰트 설정 (예: Windows)
rc('font', family='Malgun Gothic')
# 유니코드 음수 기호가 깨지지 않도록 설정
plt.rcParams['axes.unicode_minus'] = False

 

대푯값 구하기(파이썬)

df = pd.DataFrame({
    '점수': [70, 72, 80, 77, 80]
})

# 평균 구하기
s_mean = df['점수'].mean()
print(s_mean) # 75.8

# 중앙값 구하기
s_median = df['점수'].median()
print(s_median) # 77

# 최빈값 구하기
s_mode = df['점수'].mode()[0]
print(s_mode) # 80

 


퍼짐 정도

 

대푯값을 이용하면 데이터가 어디를 중심으로 분포하는지를 알 수 있지만, 데이터가 어느정도로 퍼져있는 지를 파악할 수 없다. 예를 들어, 데이터셋이 모두 평균값이 50이라고 가정하더라도, 한 데이터 셋은 모든 값이 50 근처에 몰려 있을 수 있고, 다른 데이터셋은 값이 10과  90에만 존재할 수도 있다. 이처럼 퍼짐 정도를 나타내는 통계량을 함께 살펴봐야 데이터의 특성을 더 잘 이해할 수 있다. 

왼쪽: 평균값 50, 분산 0 // 오른쪽: 평균값 50, 분산 40

 

데이터 퍼짐 정도를 측정하는 기술통계량으로 분산과 표준편차가 있다. 일반적으로 표본을 대상으로 조사하기 때문에 이를 표본분산과 표본표준편차라 부른다. 관측값들이 자료의 중심위치에서 얼마나 떨어져 있는지를 측정하기 위해, 각 관측값에서 평균값과의 차이를 계산한다. 이를 편차라고 한다. 그러나 편차를 단순히 더하면 결과가 0이 되므로, 각 편차를 제곱하여 합산한다. 이 값을 (표본 크기 - 1)로 나누면 분산을 구할 수 있다. 표본이 아닌 모집단의 분산을 구할 때는 n으로 나눠준다.

분산구하기

 

분산의 주요 특징은 다음과 같다

  • 항상 0 이상의 값을 가진다.
  • 데이터의 값이 모두 동일할 경우, 분산은 0이 된다.
  • 데이터의 퍼짐 정도가 클수록 분산도 커진다.

분산은 데이터를 분석할 때 유용한 척도이지만, 제곱을 취하는 과정에서 데이터의 단위가 제곱으로 변하는 문제가 있다. 이로 인해 데이터가 얼마나 퍼져 있는지 직관적으로 이해하기 어려울 수 있다. 이를 보완하기 위해 분산에 제곱근을 취하여 원래 단위로 복원한 값이 표준편차이다. 표준편차는 데이터의 퍼짐 정도를 보다 직관적으로 이해할 수 있게 해주며, 일반적으로  s 로 표기한다.

 

동일한 평균값과 분산을 가진 분포

하지만 위의 그래프에서 확인할 수 있듯이, 동일한 평균값과 분산을 가지더라도 데이터는 전혀 다른 분포를 가질 수 있다.

이때 데이터를 크기 순서대로 나누어 4개의 구간으로 나눌 때 경계가 되는 값들인 사분위수를 활용할 수 있다. 사분위수를 사용하면 데이터의 퍼짐 정도와 분포 특성을 더 구체적으로 파악할 수 있어 이러한 한계를 보완할 수 있다.

 

이 외에도 데이터의 분포를 요약적으로 나타내는 방법으로 최댓값과 최솟값의 차이를 의미하는 범위를 계산할 수 있다.

 

퍼짐 정도 구하기(파이썬)

df = pd.DataFrame({
    '점수': [70, 72, 80, 77, 90]
})

# 분산 구하기
s_var = df['점수'].var()
print(s_var) # 62.2

# 표준편차 구하기
s_std = df['점수'].std()
print(s_std) # 7.88

# 범위 구하기
s_range = df['점수'].max() - df['점수'].min()
print(s_range) # 20

# 사분위수 구하기
Q1, Q2, Q3 = df['점수'].quantile([0.25, 0.5, 0.75])
print(Q1, Q2, Q3) # 72, 77, 80


# 평균, 표준편차, 최댓값, 최솟값, 사분위수 한번에 구하기
df.describe()

2. 데이터의 경향을 시각적으로 파악하기

데이터를 그래프로 시각화하면 숫자만으로 확인하기 어려운 분포와 경향을 직관적으로 이해할 수 있다. 대표적인 시각화 방법은 다음과 같다.

    • 히스토그램 : 데이터의 분포빈도를 확인할 수 있다. 
    • 박스플롯(상자수염그림) : 데이터의 중앙값, 사분위수, 이상치를 시각적으로 나태난다.
    • 막대그래프 : 범주형 데이터빈도를 비교하는 데 적합하다.

분포를 한눈에 볼 수 있는 시각화기법

 

시각화는 데이터를 보다 쉽게 이해하고 분석 방향을 설정하는 데 큰 도움을 준다. 따라서 데이터 분석 초기에 적절한 시각화 기법을 활용하여 데이터의 전반적인 특징을 파악하는 것이 중요하다. 

 

히스토그램, 박스플롯, 막대그래프 그리기(파이썬)

# 데이터 생성
numerical_data = np.random.normal(loc=55, scale=20, size=1000)
categorical_data = ['만족', '만족', '불만족', '만족', '불만족', '만족', '만족', '불만족']

# 1행 3열 그래프 그리기
fig, axes = plt.subplots(1, 3, figsize=(12, 4)) 

# 히스토그램 생성
sns.histplot(numerical_data, ax=axes[0])

# 박스플롯(상자수염그림) 생성
sns.boxplot(numerical_data, ax=axes[1])

# 카운트플롯 생성 (범주형 데이터의 범주별 빈도 확인)
sns.countplot(x=categorical_data, ax=axes[2])

seaborn 라이브러리를 활용한 시각화

 

박스플롯에서 박스 내부의 선은 데이터를 절반으로 나누는 중앙값(제2사분위수, Q2)을 나타내며, 박스의 양 끝은 각각 제1사분위수(Q1)와 제3사분위수(Q3)를 나타낸다.

 

박스플롯 바깥쪽에 위치한 점들은 이상치를 의미한다. 이상치는 사분위 범위(IQR)를 기준으로 정의되며, IQR은 Q3 - Q1 으로 계산된다. 일반적으로 다음 조건을 만족하는 데이터를 이상치로 간주한다.

  • Q1 - IQR x 1.5 보다 작은 값
  • Q3 + IQR x 1.5 보다 큰값

이러한 방식으로 이상치를 정의하기도 하고, 데이터의 특성에 따라 다른 기준을 사용할 수도 있다. 예를 들어, 평균과 표준편차를 기준으로 평균에서 ± 2~3배 표준편차를 벗어나는 데이터를 이상치로 정의하기도 한다.


그 외에도 두 수치형 변수 간의 관계를 확인하기 위해 산점도를 사용할 수 있다. 산점도는 데이터의 분포뿐만 아니라 변수 간의 관계(상관관계, 패턴 등)를 시각적으로 파악하는 데 유용하다.

 

또한, 여러 수치형 변수들 간의 상관관계를 분석할 때는 상관계수를 계산하여 이를 히트맵으로 시각화할 수 있다. 히트맵은 상관계수를 색상으로 표현해 데이터 간의 관계를 한눈에 파악할 수 있도록 도와준다.

 

이러한 시각화 기법들은 데이터의 숨겨진 관계와 구조를 발견하는 데 도움을 준다.

# seaborn 데이터셋 불러오기
df_iris = sns.load_dataset('iris')

# 산점도 그리기
sns.scatterplot(x='sepal_length', y='petal_length', data=df_iris)

 

두 수치형 데이터의 산점도

 

데이터프레임 안의 여러 수치형 변수들의 산점도와 히스토그램을 한번에 그리는 방법도 있다. 범주별로 색상을 다르게 주고 싶다면 hue='범주형 열 이름' 매개변수를 사용하면 된다.

# 페어플롯 그리기
sns.pairplot(df_iris)
# sns.pairplot(df_iris, hue='species')

페어플롯

 

상관계수는 데이터프레임의 corr() 함수를 사용하여 계산할 수 있으며, 결과를 seaborn의 heatmap() 함수를 활용해 시각화할 수 있다. 만약 데이터프레임에 범주형 열이 포함되어 있다면, corr() 함수의 numeric_only=True 매개변수를 사용하여 수치형 열만 선택해 계산해야 한다. 

# 상관계수 구하기
iris_corr = df_iris.corr(numeric_only=True)

# 히트맵 그리기
sns.heatmap(iris_corr, annot=True, fmt='.2f', cmap='grey')

 

상관 계수 히트맵

 

 

여기서 살펴보는 상관 계수는 피어슨 상관 계수로, 두 수치형 변수 간의 선형 관계를 측정하는 통계량이다. 이 값은 -1 과 +1 사이의 값을 가지며 다음과 같은 의미를 가진다

  • -1 : 완벽한 음의 선형 관계
  • 0 : 선형 관계가 없음
  • 1 : 완벽한 양의 선형 관계

주의해야 할 점은 아래 산점도에서 볼 수 있듯이 상관 계수가 0 이라는 것이 두 변수 간에 선형 관계가 없음을 의미할 뿐, 다른 형태의 관계(예: 비선형 관계)가 존재할 가능성을 배제하지 않는다는 점이다. 따라서 상관계수를 계산한 후에는 산점도와 같은 시각화를 통해 두 변수 간의 관계를 추가적으로 확인하는 것이 중요하다.

 

출처: 위키백과

 


해당 페이지는 다음 자료들을 참고하여 작성하였습니다.

- 통계101x데이터 분석(아베 마사토)

- 통계학 : 파이썬을 이용한 분석 (인하대학교 통계학과)

- 위키백과

'학습 > 통계학' 카테고리의 다른 글

1. 기초 통계학 소개  (0) 2025.01.10

통계학의 필요성

 

통계학을 배우는 이유는, 수많은 정보가 넘쳐나는 현대사회에서 정보의 신뢰성을 검증하는 강력한 수단 중 하나이기 때문이다. 또한, 통계는 타인을 설득하는 과정에서 유용한 도구로 활용된다. 즉, 통계학은 정보의 신뢰성을 검증하고 타인을 설득할 수 있도록 객관적인 근거를 만들어내는 원리와 방법론을 제공한다. 그 원리와 방법론에 대해서 알아보자.


모집단과 표본

 

먼저, 통계학에서 사용되는 몇 가지 기본 용어를 살펴보자. 바로 모집단과 표본이다.

예를 들어, 한국 여성의 평균 키를 알고 싶다고 하자. 이를 위해 한국 국적을 가진 모든 여성의 키를 재어 평균을 구해야 한다. 여기서 한국 국적을 가진 모든 여성의 키가 바로 모집단이다. 이론적으로는 가능하지만 현실적으로 어렵거나 비용이 많이 든다. 그렇기 때문에 실제로 조사 가능한 일부 자료들을 이용하여 전체를 추정한다. 이때 조사하게 되는 일부 여성들의 키가 바로 표본이다. 

  • 모집단 : 알고자 하는 대상의 모든 개체관찰값들의 집합
  • 표본 : 모집단의 일부 데이터

 

다른 예시로, 어떤 제약회사에서 비만을 치료하는 신약을 개발했다고 하자. 이 약의 효과를 확인하려면, 미래의 모든 비만환자를 포함해 이 약을 복용할 모든 사람을 조사해봐야 한다. 그러나 이는 불가능하다. 대신, 현재의 비만환자들 중 일부를 선택하여 표본으로 삼아 연구를 진행한다. 이와 같이 모집단에서 일부를 선택하는 과정을 표본추출이라 한다.

표본 데이터

 

첫 번째 예시에서 데이터 분석의 목적은 대한민국 여성의 평균 키를 알아내는 것이고

두 번째 예시에서 데이터 분석의 목적은 신약의 효과 유무를 알아내는 것이었다.

이처럼 데이터 분석의 목적이 정해졌다면, 앞서 살펴보았듯이 알고자 하는 대상 즉, 모집단을 명확히 하는 것이 중요하다. 

 

 

분석 목적에서 알 수 있듯이, 우리는 보통 모집단의 어떤 특성을 알고 싶어한다. 예를 들어, 여성의 평균 키나 신약을 복용한 사람의 평균 BMI를 알게된다면 대상을 설명하거나 이해할 수 있을 뿐만 아니라, 이를 기반으로 예측을 할 수도 있다. 이때 모집단의 특성모수라고 한다.

 

모수를 알아내기 위해서는 모집단 전체를 조사하거나 일부를 조사하여 모집단의 성질을 추정해야한다.

  • 모집단 전체를 조사하는 방식을 전수조사라고 하며, 이는 모집단이 유한할 때만 가능하다. 하지만 현실적으로 전수조사는 어려운 경우가 많으며, 모집단이 무한할 때는 불가능하다.
  • 따라서 모집단의 일부를 추출하여 조사하는 표본조사가 더 일반적이다. 

기술통계와 추론통계

 

모집단 전체 데이터를 수집했다면, 우리는 모수를 알아내기 위해 데이터를 정리하고 요약하면 된다. 이를 기술통계라고 한다.

반면, 표본만을 가지고 있다면, 표본을 바탕으로 모집단의 특성을 예측하거나 추론해야 한다. 이러한 과정을 추론통계라 한다.

 표본에 포함된 요소의 개수를 표본크기라고 하는데 추론통계에서 중요한 영향을 미친다. 표본의 크기가 충분히 크지 않다면 모집단의 특성을 정확히 추정하기 어려울 수 있다.

 

예를 들어, 10명을 뽑아 한국의 평균 키를 추정하는 것보다 1000명을 뽑아 추정하는 경우 더 신뢰할 수 있는 결과를 얻을 가능성이 높다. 이는 표본의 크기가 클수록 모집단을 더 잘 대표할 가능성이 높기 때문이다. 따라서 통계 분석에서 표본크기는 중요한 요소 중 하나로 간주된다. 


해당 페이지는 다음 자료들을 참고해서 작성하였습니다.

- 통계101x데이터 분석(아베 마사토)

- 통계학 : 파이썬을 이용한 분석 (인하대학교 통계학과)

 

 

 

'학습 > 통계학' 카테고리의 다른 글

2. 데이터의 유형  (0) 2025.01.11

+ Recent posts