ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • ChatGPT로 데이터 분석 공부하기 #5 정규분포
    ChatGPT로 공부하기/데이터 분석 2024. 11. 7. 22:19

     

    1. 기본 개념


    정규분포는 데이터가 평균을 중심으로 좌우 대칭으로 분포하는 종 모양의 분포입니다. 이 분포는 자연 현상, 경제 데이터, 인간 행동 패턴 등에서 흔히 관찰되는 분포입니다.

    정규분포는 평균(μ)과 표준편차(σ)에 의해 결정되며, 이를 확률 밀도 함수로 표현하면 다음과 같습니다:

    여기서:

    • μ(뮤): 평균으로, 정규분포의 중앙값입니다.
    • σ(시그마): 표준편차로, 데이터가 평균에서 얼마나 퍼져 있는지를 나타냅니다.

    정규분포의 특징:

    1. 대칭성: 평균을 기준으로 좌우가 대칭입니다.
    2. 68-95-99.7 규칙: 평균을 중심으로 한 표준편차 범위 내에 데이터가 포함될 확률이 다음과 같습니다:
      • 평균 ± 1σ: 약 68%
      • 평균 ± 2σ: 약 95%
      • 평균 ± 3σ: 약 99.7%

    정규분포는 다양한 통계 분석에서 기본 가정으로 사용되며, 데이터가 정규분포를 따른다고 가정할 때 신뢰 구간이나 가설 검정 등이 용이해집니다.


    2. Python Jupyter Notebook 샘플 코드

    Python을 사용해 가상의 데이터를 생성하고 정규분포를 시각화해 보겠습니다.

    import numpy as np
    import matplotlib.pyplot as plt
    
    # 정규분포를 따르는 가상의 데이터 생성
    mu = 50  # 평균
    sigma = 10  # 표준편차
    data = np.random.normal(mu, sigma, 1000)
    
    # 히스토그램을 통해 데이터 분포 시각화
    plt.hist(data, bins=30, density=True, alpha=0.6, color='b')
    
    # 정규분포 그래프 추가
    x = np.linspace(min(data), max(data), 100)
    y = (1 / (np.sqrt(2 * np.pi * sigma**2))) * np.exp(- (x - mu)**2 / (2 * sigma**2))
    plt.plot(x, y, color='r')
    
    plt.title("정규분포 (평균=50, 표준편차=10)")
    plt.xlabel("값")
    plt.ylabel("밀도")
    plt.show()
    
    

    코드 설명

    • np.random.normal(mu, sigma, 1000): 평균 50, 표준편차 10을 가지는 정규분포 데이터 1000개를 생성합니다.
    • plt.hist(): 히스토그램을 통해 데이터 분포를 시각화합니다.
    • plt.plot(): 생성된 데이터의 평균과 표준편차를 기반으로 정규분포 곡선을 추가합니다.

    3. 실제 업무에서의 정규분포 활용 예시

    정규분포는 다양한 실무 상황에서 사용됩니다. 대표적인 예시는 다음과 같습니다.

    • 품질 관리: 제품 크기, 무게, 온도 등의 측정값이 정규분포를 따르는지 확인하여, 품질 관리의 기준을 정합니다. 예를 들어, 제품의 무게가 평균 ± 2σ 내에 들어온다면 이를 정상 범위로 간주할 수 있습니다.
    • 금융 분석: 주식 수익률이 정규분포를 따른다고 가정하고 리스크를 분석합니다. 수익률이 특정 표준편차 내에 있는지 파악하여 변동성을 예측할 수 있습니다.
    • 인사 관리: 직원 성과 평가 점수나 시험 점수가 정규분포를 따른다고 가정하고, 평균과 표준편차를 기준으로 평가 등급을 나눌 수 있습니다.

    실제 업무에서 정규분포 활용 예시 코드

    예를 들어, 제품 생산에서 품질 관리를 위해 제품의 무게가 정규분포를 따르는지 시각화해 보겠습니다.

    # 가상의 제품 무게 데이터 생성 (평균=500g, 표준편차=20g)
    product_weights = np.random.normal(500, 20, 1000)
    
    # 히스토그램으로 제품 무게 분포 시각화
    plt.hist(product_weights, bins=30, density=True, alpha=0.6, color='g')
    
    # 정규분포 곡선 추가
    x = np.linspace(min(product_weights), max(product_weights), 100)
    y = (1 / (np.sqrt(2 * np.pi * 20**2))) * np.exp(- (x - 500)**2 / (2 * 20**2))
    plt.plot(x, y, color='r')
    
    plt.title("제품 무게의 정규분포 (평균=500g, 표준편차=20g)")
    plt.xlabel("무게(g)")
    plt.ylabel("밀도")
    plt.show()
    
    # 품질 관리 기준 (평균 ± 2σ 내에 있는지 검사)
    lower_limit = 500 - 2 * 20
    upper_limit = 500 + 2 * 20
    in_spec = (product_weights >= lower_limit) & (product_weights <= upper_limit)
    print("품질 기준 내에 있는 제품 비율:", np.mean(in_spec) * 100, "%")
    
    

    코드 설명

    1. 데이터 생성: 평균 500g, 표준편차 20g을 따르는 제품 무게 데이터를 생성합니다.
    2. 정규분포 시각화: 히스토그램과 정규분포 곡선을 함께 표시하여 제품 무게 분포를 시각화합니다.
    3. 품질 기준 검사: 품질 관리 기준으로 설정된 평균 ± 2σ 범위에 들어오는 제품의 비율을 계산하여, 제품이 기준 내에 들어오는지 확인합니다.

    예제 데이터 해석

    • 품질 관리: 품질 기준 내에 있는 제품의 비율이 95% 이상이라면, 대부분의 제품이 정상 범위 내에 있다고 판단할 수 있습니다. 이를 통해 생산 공정의 안정성을 평가할 수 있습니다.
    • 비즈니스 의사결정: 데이터가 정규분포를 따르는 경우, 통계적 기법을 활용해 제품의 품질을 예측하고 관리할 수 있으며, 필요 시 공정 개선이나 제품 기준을 재조정할 수 있습니다.

    정규분포는 데이터의 일반적인 경향을 이해하고, 예측하거나 품질 관리와 같은 중요한 의사결정을 지원하는 데 유용합니다.

     

     

     

Designed by Tistory.