728x90

Python을 사용한 통계 분석은 데이터 과학과 머신 러닝 분야에서 매우 중요합니다. Python의 여러 라이브러리를 활용하면 다양한 통계 분석을 쉽게 수행할 수 있습니다. 여기서는 Python에서 통계 분석을 수행하는 방법과 관련 라이브러리를 소개하고, 간단한 예제를 통해 실습해 보겠습니다.

Python에서 통계 분석을 위한 주요 라이브러리

  1. NumPy:

    • 기본적인 수학적 연산 및 다차원 배열을 다루기 위한 라이브러리입니다.
    • 평균, 표준 편차, 분산 등의 기본 통계 함수를 제공합니다.
  2. Pandas:

    • 데이터 프레임 구조를 제공하여 데이터 조작과 분석에 유용합니다.
    • 다양한 데이터 전처리 기능과 함께 기술 통계(descriptive statistics)를 쉽게 계산할 수 있습니다.
  3. SciPy:

    • 과학 계산을 위한 라이브러리로, 다양한 고급 통계 기능을 제공합니다.
    • 통계적 검정, 확률 분포, 회귀 분석 등의 기능을 포함하고 있습니다.
  4. StatsModels:

    • 통계 모델을 위한 라이브러리로, 회귀 분석, 시계열 분석, 분산 분석(ANOVA) 등을 제공합니다.
    • 상세한 통계 분석과 함께 다양한 시각화 기능을 지원합니다.
  5. Matplotlib 및 Seaborn:

    • 데이터 시각화를 위한 라이브러리로, 통계적 데이터의 패턴과 경향을 파악하는 데 유용합니다.
    • Seaborn은 Matplotlib 위에서 작동하며, 통계 그래프를 그리기 쉽게 만듭니다.

Python에서의 통계 분석 예제

다음은 Python을 사용하여 간단한 통계 분석을 수행하는 예제입니다. 이 예제에서는 Pandas와 SciPy를 사용하여 데이터셋을 탐색하고, t-검정을 수행합니다.

예제: 학생 성적 데이터 분석

아래 코드는 두 그룹의 학생 성적 데이터를 비교하는 t-검정(t-test)을 수행합니다.

import pandas as pd
import numpy as np
from scipy import stats

# 두 그룹의 학생 성적 데이터 생성
np.random.seed(42)  # 재현성을 위해 난수 시드 설정
group1_scores = np.random.normal(loc=75, scale=10, size=30)  # 평균 75, 표준편차 10
group2_scores = np.random.normal(loc=70, scale=10, size=30)  # 평균 70, 표준편차 10

# 데이터 프레임으로 변환
data = pd.DataFrame({
    'Group1': group1_scores,
    'Group2': group2_scores
})

# 기술 통계 출력
print("기술 통계")
print(data.describe())

# t-검정 수행
t_stat, p_value = stats.ttest_ind(group1_scores, group2_scores)

# 결과 출력
print("\nT-검정 결과")
print(f"T-통계량: {t_stat:.2f}")
print(f"P-값: {p_value:.4f}")

# P-값 해석
alpha = 0.05
if p_value < alpha:
    print("유의미한 차이가 있습니다. (귀무 가설 기각)")
else:
    print("유의미한 차이가 없습니다. (귀무 가설 채택)")

코드 설명

  1. 데이터 생성:

    • numpy.random.normal을 사용하여 두 그룹의 성적 데이터를 생성합니다.
    • 각 그룹은 평균과 표준편차가 다른 정규 분포를 따릅니다.
  2. 데이터 프레임 생성:

    • pandas.DataFrame을 사용하여 데이터를 표 형식으로 정리합니다.
  3. 기술 통계 출력:

    • data.describe()를 통해 데이터의 기술 통계를 요약합니다(평균, 표준편차, 최소/최대값 등).
  4. t-검정 수행:

    • scipy.stats.ttest_ind를 사용하여 두 그룹 간의 평균 차이를 검정합니다.
    • T-검정은 두 독립 표본의 평균 차이가 유의미한지 판단하는 데 사용됩니다.
  5. 결과 해석:

    • P-값이 0.05보다 작으면 귀무 가설을 기각하고, 유의미한 차이가 있다고 결론 내립니다.
    • 그렇지 않으면 귀무 가설을 채택합니다.

추가 통계 분석

위 예제 외에도 Python을 사용하여 다양한 통계 분석을 수행할 수 있습니다:

  • 회귀 분석: 데이터의 선형 관계를 분석하고 예측 모델을 구축합니다.
  • 카이제곱 검정: 범주형 데이터의 독립성을 검정합니다.
  • ANOVA: 여러 그룹 간의 평균 차이를 검정합니다.
  • 시계열 분석: 시간에 따른 데이터의 경향성과 계절성을 분석합니다.

예제: 회귀 분석

아래는 StatsModels를 사용하여 간단한 회귀 분석을 수행하는 예제입니다.

import statsmodels.api as sm

# 예제 데이터 생성
np.random.seed(42)
X = np.random.rand(100) * 10  # 독립 변수
y = 3 * X + np.random.normal(0, 1, 100)  # 종속 변수 (노이즈 추가)

# 상수항 추가
X = sm.add_constant(X)

# 회귀 모델 적합
model = sm.OLS(y, X)
results = model.fit()

# 회귀 분석 결과 출력
print("회귀 분석 결과")
print(results.summary())

코드 설명

  1. 데이터 생성:

    • 임의의 X 값을 생성하고, y 값은 X에 대한 선형 관계를 따릅니다.
    • 노이즈를 추가하여 실제 데이터를 시뮬레이션합니다.
  2. 상수항 추가:

    • statsmodels.api.add_constant를 사용하여 회귀 분석에 필요한 상수항을 추가합니다.
  3. 회귀 모델 적합:

    • sm.OLS를 사용하여 선형 회귀 모델을 적합하고, fit 메서드로 모델을 학습시킵니다.
  4. 결과 출력:

    • results.summary()를 통해 회귀 분석 결과를 요약합니다.

이렇게 Python을 사용하면 다양한 통계 분석을 손쉽게 수행할 수 있습니다.

728x90
반응형

'Software > Python' 카테고리의 다른 글

Python 시작하기 - YOLO객체 감지  (1) 2024.09.09
Python 시작하기 - 수식편집기  (0) 2024.08.22
Python 시작하기 - AI 모델  (0) 2024.07.31
Python시작하기 - QRcode  (0) 2024.07.30
파이선 소개(chatGPT작성)  (1) 2024.07.23

+ Recent posts