이 페이지에는 데이터를 가공하고 통계적으로 분석하는 심화 이론과 코딩 방법이 기술되어 있습니다.
이곳에 수록된 내용은 중급물리실험 수강자를 대상으로 합니다.
해당 이론과 방법론은 실험 과목 뿐만 아니라 여러분의 학교생활 전반에 있어 매우 자주 사용될 중요한 것들입니다.
따라서 이 페이지를 잘 숙지하시고, 두고두고 잘 써먹을 수 있게 연습해 두시는 것을 강력히 권장합니다.
통계적 검정은 실험 결과(데이터)가 특정 가설(예를 들어 기존의 알려진 값이나 다른 측정 방법으로 얻은 결과)와 통계적으로 유의미한 차이가 있는지 평가하는 데 사용됩니다. 즉, 이 과정을 통해 실험 결과가 가설 내지는 이론과 잘 일치하는지, 통계적으로 유의미한 차이가 있는지 결정할 수 있습니다.
통계적 검정을 구체적으로 살펴보면, 결국 표본으로부터 얻어낸 두 값(ex: 실험적으로 측정한 중력가속도와 알려진 중력가속도 참값)이 통계적으로 유의미한 차이를 보이는지 판단하는 일입니다. 검정을 진행하는 방법에는 여러가지 종류가 있으며, 상황에 따라 적절한 검정 방법을 사용해야 합니다. 이 글에서는 가장 기본적인 두 개의 검정 방법을 소개합니다. 검정을 실시하면 결과로 p-value(두 값이 ‘우연히’ 다르게 보였을 확률)를 얻을 수 있습니다.
#Z-검정 예시
import numpy as np
from scipy.stats import norm
# 샘플 데이터: 측정된 중력가속도 값의 배열
sample_data = np.array([9.8, 9.9, 9.78, 9.76, 9.82, 9.85, 9.79, 9.81])
# 샘플 평균 및 표준편차 계산
sample_mean = np.mean(sample_data)
sample_std = np.std(sample_data, ddof=1) # ddof=1로 설정하여 표본 표준편차를 계산
n = len(sample_data) # 샘플 크기
# 중력가속도의 알려진 평균값
population_mean = 9.81
# 표준 오차 계산
se = sample_std / np.sqrt(n)
# Z-점수 계산
z_score = (sample_mean - population_mean) / se
# p-value 계산
p_value = 2 * norm.cdf(-np.abs(z_score))
print(f"Z-점수: {z_score}")
print(f"p-value: {p_value}")
from scipy import stats
import numpy as np
# 샘플 데이터: 측정된 중력가속도 값의 배열
sample_data = np.array([9.8, 9.9, 9.78, 9.76, 9.82, 9.85, 9.79, 9.81])
# 중력가속도의 알려진 평균값
population_mean = 9.81
# 단일 표본 t-검정 수행
t_stat, p_value = stats.ttest_1samp(sample_data, population_mean)
print(f"T-통계량: {t_stat}")
print(f"p-value: {p_value}")