파이썬을 이용한 통계적 추론

이번 포스팅에서는 파이썬을 이용한 통계적 추론 방법에 대해서 알아보겠습니다.
통계적 추론은 데이터 샘플을 사용하여 결론을 유추하고, 예측하고, 모집단에 대한 가설을 검정하는 것을 수반합니다.

다시 말해, 통계적 추론은 작은 데이터 샘플을 활용하여 전체 모집단에 대한 결론이나 일반화를 도출할 수 있도록 합니다.
데이터에 기반한 판단을 내리고, 과학적 연구를 수행하고, 데이터에서 관계의 중요성을 평가하는 데는 모두 이 절차가 필요합니다.

통계적 추론의 구성 요소와 중요성

  1. 통계적 추론: 통계적 추론이라고 알려진 통계 분야는 데이터에 대한 간단한 설명을 넘어섭니다.
    이는 모집단 기반 가설에 대한 추론, 추측 및 이론 검증을 수반합니다.
    통계적 추론 중 가설 검증은 가설을 검증하고 연구 문제에 대한 답을 찾을 수 있습니다.
    이는 표본의 관찰된 상관 관계 또는 차이가 통계적으로 유의미한지 여부와 우연의 결과가 아닌지 여부를 결정하는 데 도움이 됩니다.
  2. 모집단 추정: 표본 통계를 기반으로 모집단 평균, 분산, 비율 또는 상관 관계와 같은 모집단 모수를 추정할 수 있습니다.
    의사 결정은 이러한 추정에 크게 의존할 수 있습니다.
  3. 예측 모델링: 예측 모델링은 추론 통계에 크게 의존합니다.
    예를 들어 선형 회귀에서 이전 데이터를 기반으로 새로운 값을 예측하는 데 사용됩니다.
  4. 일반화: 표본 데이터를 기반으로 모집단에 대한 일반화에 도움이 됩니다.
    예를 들어, 표본을 가지고 새로운 치료법의 효과를 조사하여 통계적 추론을 통하여 약물이 모든 환자에게 효과적인지 확인할 수 있습니다.
  5. 인과 관계 테스트: 인과 관계 테스트는 통계적 추론을 사용합니다.
    과학 및 사회 연구에서 한 변수의 변화가 다른 변수의 변화를 주도하는지 여부를 확인하는 것이 중요합니다.
  6. 연구 타당성: 통계적 추론은 과학적 연구가 타당하고 신뢰할 수 있는 결과를 얻을 수 있는 방법을 제공합니다.
    우연의 결과일 가능성이 낮은 연관성을 결정하는 데 도움이 되며 연구자가 결과의 타당성을 평가하는 데 도움이 됩니다.
  7. 위험 평가: 통계적 추론은 은행, 보험 및 의료를 포함한 산업에서 위험을 평가하고 관리하는 데 사용됩니다.
    전문가는 과거 사실을 연구하고 결론을 도출한 지식을 기반으로 투자, 정책 및 치료법에 대한 결정을 내릴 수 있습니다.
  8. 데이터 기반 의사 결정: 통계적 추론은 다양한 분야에서 데이터 기반 의사 결정을 용이하게 합니다.
    이는 개인과 조직이 직감이나 추측이 아닌 데이터와 통계 분석을 바탕으로 결정을 내릴 수 있도록 해줍니다.



통계적 추론 소개

기술 통계학 다음으로 자연스럽게 나오는 통계 분야가 통계적 추론입니다. 이는 샘플 데이터를 사용하여 모집단에 대한 일반화를 만들고, 가설을 검정하고, 현명한 판단을 내릴 수 있는 능력을 제공합니다.


통계적 추론을 위한 파이썬 라이브러리

후에 나오는 통계적 추론 방법의 실습을 위해 필요한 파이썬 라이브러리를 소개합니다.

import numpy as np
import scipy.stats as stats
import pandas as pd
import matplotlib.pyplot as plt
  • 숫자 연산을 위한 NumPy
  • 고급 통계 연산을 위한 SciPy
  • 데이터 조작 및 분석을 위한 Pandas
  • 데이터 시각화를 위한 Matplotlib


표본 추출 및 표본 분포

무작위 표본 추출

무작위 표본 추출은 각 데이터가 추출될 가능성이 동일하도록 보장하는 추출 방식으로 모집단에서 데이터 포인트의 하위 집합을 선택하는 프로세스입니다. 이 프로세스는 표본을 기반으로 모집단에 대한 의미 있는 추론을 도출하는 데 필수적입니다.

import random

# 예: 모집단에서 100개의 데이터 포인트 무작위 표본 추출
population = [value for value in range(1,101)]
sample = random.sample(population, 50)


중심극한정리

중심극한정리는 모집단에서 충분히 많은 수의 임의 표본을 추출하여 계산한 표본 평균은 모집단의 분포와 관계없이 정규 분포를 따르게 된다는 이론입니다. 이 정리는 가설 검정에 기본이 되는 매우 중요한 이론입니다.

import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

# Example: 모집단에서 데이터를 추출하여 표본 평균 산출
population = np.random.normal(0, 1, 10000)
sampleMeans = [np.mean(np.random.choice(population, 30)) for _ in range(1000)]

# 표본 평균의 분포 산출
sns.histplot(sampleMeans, kde = True)
plt.show()



가설 검정

가설 수립하기

가설 검정에서는 귀무가설(H0)과 대안가설(H1)이라는 두 가지 가설을 수립합니다. 귀무 가설은 기본 가정을 나타내고, 대안 가설은 검정하고자 하는 가설입니다.

귀무가설과 대안가설 수립 예시
H0 : 두 그룹 간에 시험 점수의 차이가 없습니다.
H1 : 두 그룹 간에 시험 점수의 차이가 있습니다.


T-tests

t-검정은 표본의 평균이 알려진 평균이나 다른 표본의 평균과 유의한 차이가 존재하는 지 검정하는 데 사용됩니다.

import scipy.stats as stats

# Example: 두 표본 평균(sample1, sample2)을 비교하기 위한 t-검정 수행
sample1 = [85, 90, 88, 92, 87]
sample2 = [78, 82, 80, 84, 79]
stats.ttest_ind(sample1, sample2)

----------------------------------------------------------------------------------
Ttest_indResult(statistic=4.818856093078688, pvalue=0.0013232937447847455)


카이제곱 검정

카이제곱 검정은 범주형 데이터 간의 관계를 분석하는 데 사용됩니다. 관찰된 빈도가 예상 빈도와 다른지 평가합니다.

import scipy.stats as stats

# 예: 독립성에 대한 카이제곱 검정 수행
observed = [[20, 30], [10, 25]]
stats.chi2_contingency(observed)
---------------------------------------------------------------------------------
Chi2ContingencyResult(statistic=0.7302272727272723
, pvalue=0.39280953047820566
, dof=1
, expected_freq=array([[17.64705882, 32.35294118],[12.35294118, 22.64705882]]))


분산 분석(ANOVA)

분산 분석(ANOVA)은 그룹 평균 간의 차이가 존재하는지 분석하는 데 사용됩니다. 세 개 이상의 그룹 간에 통계적으로 유의미한 차이가 있는지 여부를 판별하는 검증방법입니다.

import scipy.stats as stats

# 예: 3개 그룹의 평균을 비교하기 위한 one-way ANOVA 수행
group1 = [78, 80, 85, 82, 90]
group2 = [70, 72, 75, 68, 73]
group3 = [85, 88, 86, 89, 90]
stats.f_oneway(group1, group2, group3)
----------------------------------------------------------------------------------
F_onewayResult(statistic=30.291666666666643, pvalue=2.0420483583359775e-05)

위에 제공된 코드 예제는 파이썬에서 통계적 추론을 적용하는 매우 기초적인 방법을 보여줍니다. 이러한 기술은 가설 검정, 예측 및 데이터에서 의미 있는 결론을 도출하는 데 필수적입니다.



신뢰구간(Confidence Intervals)

신뢰구간은 신뢰 수준과 함께 모집단 모수의 추정치를 제공합니다. 샘플의 평균에 대한 신뢰 구간을 구성하고 해석해 보겠습니다(신뢰구간에 대한 자세한 설명은 신뢰구간의 의미 포스팅 글을 참고하세요.).

import numpy as np
import scipy.stats as stats

# 예: 평균에 대한 95% 신뢰 구간 계산
sample_data = [84, 88, 90, 92, 85, 89, 87, 88, 91, 86]
confidence_level = 0.95

# step1) 평균과 평균의 표준오차(SEM) 계산
sample_mean = np.mean(sample_data)
sem = stats.sem(sample_data)

# step2) 오차 범위 계산
margin_of_error = sem * stats.t.ppf((1 + confidence_level) / 2, len(sample_data) - 1)

# step3) 신뢰구간 계산
confidence_interval = (sample_mean - margin_of_error, sample_mean + margin_of_error)
print(f"Sample Mean: {sample_mean:.2f}")
print(f"95% Confidence Interval: ({confidence_interval[0]:.2f}, {confidence_interval[1]:.2f})")
--------------------------------------------------------------------------------------------------------------
Sample Mean: 88.00
95% Confidence Interval: (86.15, 89.85)


상관관계 및 회귀 분석

피어슨의 상관계수

피어슨의 상관계수는 두 연속 변수 간의 선형 관계를 측정합니다. 양수 값은 양의 상관 관계를 나타내고, 음수 값은 음의 상관 관계를 나타냅니다. 값의 크기는 관계의 강도를 나타냅니다.

import numpy as np
import scipy.stats

# Example: 피어슨 상관 계수 계산
x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 4, 5, 4, 6])
correlation_coefficient, p_value = scipy.stats.pearsonr(x, y)
print(f"Pearson Correlation Coefficient: {correlation_coefficient:.2f}")
---------------------------------------------------------------------------------
Pearson Correlation Coefficient: 0.85


선형 회귀

선형 회귀는 한 변수를 다른 변수에 기반하여 모델링하고 예측할 수 있게 해줍니다. 간단한 선형 회귀 분석을 수행해 보겠습니다.

import numpy as np
from scipy import stats

# Example: 단순 선형 회귀 수행
x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 3, 2.5, 4.5, 4.2])
slope, intercept, r_value, p_value, std_err = stats.linregress(x, y)

# 주어진 X변수에 기반한 값 예측
input_value = 6
predicted_value = slope * input_value + intercept
print(f"Linear Regression Equation: y = {slope:.2f}x + {intercept:.2f}")
print(f"R-squared Value: {r_value ** 2:.2f}")
print(f"Predicted Value for x = {input_value}: {predicted_value:.2f}")
---------------------------------------------------------------------------------
Linear Regression Equation: y = 0.59x + 1.47
R-squared Value: 0.75
Predicted Value for x = 6: 5.01


결론

데이터에 기반한 의사 결정을 내리는 데 가장 효과적인 도구 중 하나는 통계적 추론입니다. 이를 통해 데이터에서 결론을 도출하고, 가설을 평가하고, 예측을 만들 수 있습니다.

이번 포스팅에서 얻은 기본 정보를 기반으로 파이썬을 사용하여 통계적 추론을 적용할 수 있습니다. 데이터에 기반한 의사 결정을 내리는 능력은 학계, 산업 및 연구를 포함한 많은 분야에서 매우 유익합니다.

감사합니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다