통계적 유의성을 검증하는 방법은 데이터의 특성과 연구 목적에 따라 다양하게 분류된다. 모수적 검정은 데이터가 특정 분포(주로 정규분포)를 따른다는 가정하에 t-검정, ANOVA 등을 사용하며, 비모수적 검정은 분포 가정 없이 순위 기반 분석을 통해 Mann-Whitney U 검정 등으로 유의성을 평가한다. 회귀 분석은 변수 간 관계를 모델링하여 독립 변수의 영향을 추정하며, 다중 비교 교정은 여러 가설 검정 시 발생할 수 있는 오류를 통제하기 위해 Bonferroni 교정이나 FDR 조정을 활용한다. 또한, 정규성 검정은 데이터가 정규분포를 따르는지 확인하여 분석 방법 선택에 도움을 주고, 질적 데이터 분석은 비수치적 데이터를 구조화해 패턴과 이론적 유의성을 도출한다. 각각의 방법은 데이터의 특성과 가정에 따라 적합하게 선택되어야 신뢰할 수 있는 결과를 도출할 수 있다.
통계적 유의성을 검증하기 전에는 연구 문제를 명확히 정의하고, 가설을 설정하며, 데이터를 수집하고 전처리하는 과정이 필요하다. 연구 문제는 분석의 목적과 방향을 결정하며, 이를 바탕으로 귀무가설(차이가 없다는 가정)과 대립가설(차이가 있다는 가정)을 설정한다. 이후, 적절한 데이터 샘플링과 품질 검증을 통해 신뢰할 수 있는 데이터를 수집하며, 결측치 처리, 이상치 제거, 정규성 검토 등의 전처리를 수행한다. 이 과정을 거친 후 통계적 유의성을 검증하는 것은, 관찰된 결과가 단순한 우연이 아니라 실제로 의미 있는 차이나 관계를 반영하는지 확인하기 위함이다. 이를 통해 연구자는 데이터를 기반으로 신뢰할 수 있는 결론을 도출하고, 가설을 지지하거나 기각할 수 있다. 통계적 유의성을 검증하지 않으면, 결과의 신뢰성과 재현 가능성을 보장하기 어렵고, 잘못된 의사결정이나 추론의 위험이 증가한다. 따라서 유의성 검증은 과학적 연구와 데이터 기반 분석에서 필수적인 단계로, 연구의 객관성과 신뢰도를 확보하기 위해 반드시 수행해야 한다.
1. 모수적 검정과 비모수적 검정 ( Parametric Test and Non - Parametic Test )
1.1 모수적 검정
모수적 검정은 데이터가 특정한 확률 분포(주로 정규분포)를 따른다는 가정하에 수행되는 통계적 유의성 검정 방법이다. 이 방법은 데이터를 요약하는 매개변수(평균, 분산 등)를 바탕으로 집단 간 차이를 검토하거나 가설을 검증한다. 모수적 검정은 특정 분포를 따른다는 가정을 만족해야 신뢰할 수 있는 결과를 도출할 수 있다. 주요 가정은 정규성, 독립성, 등분산성(집단 간 분산이 동일하다는 가정)이며, 이를 만족하지 않을 경우 결과의 신뢰도가 낮아질 수 있다.
대표적인 모수적 검정 방법에는 t-검정과 ANOVA(분산 분석)가 있다. t-검정은 두 집단 간 평균 차이를 비교하는 데 사용되며, 독립 t-검정(두 집단이 독립적일 때)과 대응 t-검정(같은 집단의 사전-사후 데이터를 비교할 때)으로 나뉜다. 예를 들어, 새로운 교육 프로그램이 학생들의 성적에 영향을 미치는지 확인하려면, 교육 프로그램을 받은 그룹과 받지 않은 그룹의 평균 성적을 독립 t-검정을 통해 비교할 수 있다. ANOVA는 세 개 이상의 집단 간 평균 차이를 검증하며, 집단 간의 분산이 집단 내부 분산보다 유의미하게 큰지를 평가한다. 예를 들어, 세 가지 다른 운동 프로그램이 체중 감소에 미치는 영향을 분석할 때 ANOVA를 사용할 수 있다.
모수적 검정의 장점은 데이터가 가정을 충족할 경우, 적은 데이터로도 높은 검정력을 제공하며, 다양한 분석 시나리오에 적용할 수 있다는 점이다. 그러나 단점도 존재한다. 데이터가 정규분포를 따르지 않거나, 샘플 크기가 작아 가정 검증이 어렵다면, 모수적 검정은 적합하지 않다. 이러한 경우에는 비모수적 검정을 고려해야 한다. 또한, 모수적 검정 전에는 정규성 검정(Shapiro-Wilk, Kolmogorov-Smirnov 등)을 통해 데이터가 분포 가정을 충족하는지 확인하는 것이 필수적이다. 결론적으로, 모수적 검정은 데이터의 특성과 가정을 만족할 경우 강력하고 효율적인 검정 방법으로, 연구자가 집단 간 차이의 통계적 유의성을 평가하는 데 자주 사용된다.
1.1.1 T-검정
t-검정(T-test)은 두 집단 간 평균의 차이가 통계적으로 유의미한지를 평가하는 모수적 검정 방법이다. t-검정은 데이터를 통해 두 집단의 평균값이 단순히 우연히 다른 것인지, 아니면 실제로 유의미한 차이가 있는지를 검토한다. 이를 위해 정규분포를 가정하며, 검정 통계량으로 t값을 계산하고, 이를 기반으로 p-값을 도출한다. 일반적으로 p-값이 0.05보다 작으면 귀무가설(평균에 차이가 없다)을 기각하고, 두 집단 간 차이가 유의미하다고 결론짓는다. t-검정은 분석 상황에 따라 독립 t-검정과 대응 t-검정으로 나뉜다. 독립 t-검정은 두 집단이 독립적일 때, 예를 들어 남성과 여성의 평균 키를 비교할 때 사용한다. 한편, 대응 t-검정은 동일한 집단에서 두 조건의 평균 차이를 비교할 때, 예를 들어 한 그룹의 학생들이 특정 교육 프로그램을 받기 전과 받은 후의 시험 점수를 비교할 때 사용된다.
한 학교에서 새로운 학습 방법이 성적에 영향을 미치는지 검토하려고 한다고 가정하자. 20명의 학생을 두 그룹으로 나누어 한 그룹은 새로운 학습 방법(A그룹)을, 다른 그룹은 기존 학습 방법(B그룹)을 사용하게 했다. 학습 기간 후, 두 그룹의 평균 시험 점수가 각각 85점과 80점으로 나왔다고 한다. 독립 t-검정을 사용하면, 이 평균 차이가 우연히 발생했을 가능성이 낮은지 검토할 수 있다. 만약 p-값이 0.03으로 도출되었다면, 이는 3%의 확률로 우연히 이러한 차이가 발생했음을 의미하며, 일반적으로 유의수준 0.05를 기준으로 할 때 두 학습 방법이 유의미한 차이를 만든다고 결론 내릴 수 있다.
t-검정은 데이터가 정규분포를 따르고, 두 집단의 분산이 비슷하다는 가정하에서 작동한다. 이러한 가정을 충족하지 못하면, 비모수적 검정인 Mann-Whitney U 검정을 대안으로 사용할 수 있다. 결론적으로, t-검정은 두 집단 간 평균 차이를 평가하는 데 간단하고 효과적인 도구로, 연구자가 통계적 유의성을 판단하는 데 자주 사용된다.
다음은 파이썬에서 t-검정(T-test)을 수행하는 간단한 예시를 설명한 코드이다. 이 예제에서는 두 집단(예: 새로운 학습 방법 그룹과 기존 학습 방법 그룹)의 평균 시험 점수 차이를 검정한다. 이를 위해 scipy 라이브러리의 stats.ttest_ind 함수를 사용한다.
from scipy import stats
# 두 집단의 데이터 (시험 점수 예시)
group_A = [85, 87, 88, 85, 90, 92, 91, 89, 88, 86] # 새로운 학습 방법
group_B = [78, 80, 82, 81, 79, 77, 83, 80, 81, 78] # 기존 학습 방법
# 독립 t-검정 수행
t_stat, p_value = stats.ttest_ind(group_A, group_B)
# 결과 출력
print(f"T-Statistic: {t_stat:.2f}")
print(f"P-Value: {p_value:.4f}")
# 유의 수준 설정 (예: 0.05)
alpha = 0.05
if p_value < alpha:
print("결과: 두 그룹 간 평균의 차이는 통계적으로 유의미합니다.")
else:
print("결과: 두 그룹 간 평균의 차이는 통계적으로 유의미하지 않습니다.")
코드 설명
- 데이터 정의: group_A와 group_B는 각각 두 집단의 시험 점수 데이터이다.
- t-검정 수행: stats.ttest_ind 함수를 사용하여 두 집단의 평균 차이에 대한 t-값과 p-값을 계산한다.
- 결과 해석: 유의수준 α=0.05\alpha = 0.05를 기준으로 p-값을 평가하여 두 집단 간 평균 차이가 유의미한지 판단한다.
- 출력 결과: T-Statistic(검정 통계량)과 P-Value를 출력하며, 유의 수준에 따라 통계적 결론을 제시한다.
만약 A그룹과 B그룹의 점수로 위 코드를 실행한 결과가 다음과 같다면:
이는 p-값이 0.05보다 작으므로, 두 그룹의 학습 방법이 시험 점수에 유의미한 영향을 미친다는 것을 나타낸다. 이처럼 t-검정을 통해 데이터의 통계적 유의성을 간단히 확인할 수 있다.
1.1.2 ANOVA-검정
ANOVA(Analysis of Variance) 검정은 세 개 이상의 집단 간 평균 차이가 통계적으로 유의미한지를 평가하는 모수적 검정 방법이다. ANOVA는 데이터를 기반으로 집단 간 분산(집단 평균 간 차이)과 집단 내 분산(집단 내부의 데이터 변동)을 비교하여, 집단 간 차이가 우연인지 아니면 실제로 유의미한지를 판단한다. t-검정이 두 집단 간 평균 차이를 비교하는 데 사용되는 반면, ANOVA는 세 개 이상의 집단을 동시에 비교할 수 있어 효율적이다. ANOVA의 귀무가설은 "모든 집단의 평균이 같다"는 것이며, 대립가설은 "적어도 하나의 집단 평균이 다르다"는 것이다.
세 가지 학습 방법(A, B, C)이 학생들의 성적에 미치는 영향을 평가하려 한다고 가정하자. 각 집단에서 10명의 학생이 각각 시험 점수를 기록했다:
- A그룹: [85, 87, 89, 84, 86, 90, 88, 87, 85, 86]
- B그룹: [78, 80, 79, 81, 77, 82, 80, 79, 78, 80]
- C그룹: [92, 91, 93, 94, 90, 92, 91, 93, 90, 92]
ANOVA를 수행한 결과, F-값이 25.34이고 p-값이 0.0001로 나타났다면, 이는 p-값이 0.05보다 작으므로 세 학습 방법 중 적어도 하나가 나머지와 유의미하게 다른 평균 점수를 나타낸다는 것을 의미한다. 이후, 세부적으로 어느 그룹이 차이를 만드는지 확인하기 위해 사후 검정(Post-hoc Test)을 수행할 수 있다.
ANOVA는 데이터가 정규분포를 따르고, 집단 간 분산이 동일하다는 가정을 전제로 한다. 만약 가정이 만족되지 않으면, 비모수적 검정인 Kruskal-Wallis 검정을 고려해야 한다. 단순히 "집단 간 차이가 존재한다"는 것만 알려주며, 구체적으로 어떤 집단 간 차이가 있는지는 사후 검정을 통해 확인해야 한다. 결론적으로, ANOVA는 여러 집단 간 평균을 동시에 비교할 수 있는 강력한 도구로, 실험 연구나 다양한 데이터 분석에서 자주 사용된다.
다음은 파이썬을 사용하여 ANOVA 검정을 수행하는 간단한 예제이다. 이 예제에서는 세 그룹(학습 방법 A, B, C)의 시험 점수 데이터를 비교하여 세 집단 간 평균 차이가 통계적으로 유의미한지를 평가한다. 이를 위해 scipy 라이브러리의 stats.f_oneway 함수를 사용한다.
from scipy import stats
# 세 그룹의 시험 점수 데이터
group_A = [85, 87, 89, 84, 86, 90, 88, 87, 85, 86]
group_B = [78, 80, 79, 81, 77, 82, 80, 79, 78, 80]
group_C = [92, 91, 93, 94, 90, 92, 91, 93, 90, 92]
# ANOVA 검정 수행
f_stat, p_value = stats.f_oneway(group_A, group_B, group_C)
# 결과 출력
print(f"F-statistic: {f_stat:.2f}")
print(f"P-value: {p_value:.4f}")
# 유의 수준 설정 (예: 0.05)
alpha = 0.05
if p_value < alpha:
print("결과: 세 그룹 간 평균 차이는 통계적으로 유의미합니다.")
else:
print("결과: 세 그룹 간 평균 차이는 통계적으로 유의미하지 않습니다.")
데이터 정의: group_A, group_B, group_C는 각각 학습 방법 A, B, C를 사용한 그룹의 시험 점수 데이터이다.
ANOVA 검정 수행: stats.f_oneway 함수를 사용하여 F-값과 p-값을 계산한다. F-값은 집단 간 분산과 집단 내 분산의 비율을 나타내며, p-값은 귀무가설("세 그룹의 평균은 동일하다")을 기각할 수 있는 확률을 나타낸다.
결과 출력: F-값과 p-값을 출력하여 검정 결과를 확인한다. p-값이 유의 수준(예: 0.05)보다 작으면 귀무가설을 기각하고, 세 그룹 간 평균 차이가 통계적으로 유의미하다고 결론지을 수 있다.
이 결과는 p-값이 0.05보다 작으므로, 세 그룹 간 평균 차이가 유의미하다는 것을 나타낸다. 이 경우, 다음 단계로 사후 검정을 통해 어떤 그룹 간 차이가 존재하는지 추가 분석을 수행할 수 있다
1.2 비모수적 검정
비모수적 검정(Non-parametric test)은 데이터가 특정한 분포(예: 정규분포)를 따른다는 가정을 하지 않고 수행하는 통계적 검정 방법이다. 이는 모수적 검정이 데이터의 분포와 같은 특정 가정을 필요로 하는 반면, 비모수적 검정은 이러한 가정 없이 데이터를 직접 비교하거나 순위를 기반으로 분석한다. 따라서 비모수적 검정은 분포가 알려져 있지 않거나, 데이터가 비정규분포를 따르거나, 샘플 크기가 작을 때 유용하다. 비모수적 검정은 특히 순위 데이터나 명목형 데이터와 같은 비수치적 데이터에서도 사용할 수 있어 다양한 데이터 유형에 적용 가능하다.
비모수적 검정의 주요 유형은 다음과 같다. Mann-Whitney U 검정은 두 독립된 집단 간 차이를 비교하며, 이는 모수적 검정의 독립 t-검정에 해당한다. 예를 들어, 새로운 치료법과 기존 치료법의 효과를 비교할 때 데이터를 정규화할 수 없다면 Mann-Whitney U 검정을 사용할 수 있다. Wilcoxon 부호 순위 검정은 두 관련된 집단(예: 사전-사후 데이터)의 차이를 비교하며, 이는 대응 t-검정의 비모수적 대안이다. 예를 들어, 동일한 그룹의 학생들에게 두 가지 학습 방법을 적용했을 때, 성적 차이를 평가하는 데 사용될 수 있다. Kruskal-Wallis 검정은 세 개 이상의 독립 집단 간의 차이를 비교하며, 이는 ANOVA의 비모수적 대안이다. 예를 들어, 여러 치료 그룹에서 환자의 회복 속도를 비교할 때 사용할 수 있다. Friedman 검정은 관련된 여러 집단 간 차이를 비교하며, 반복 측정된 데이터에서 ANOVA를 대체할 수 있다.
비모수적 검정은 순위 기반 접근 방식을 사용한다. 즉, 데이터를 순서대로 정렬한 후 순위 값을 기반으로 계산하며, 데이터의 크기 자체가 아닌 상대적인 순서에 초점을 맞춘다. 이러한 특성 때문에 이상치(outlier)의 영향을 덜 받으며, 데이터 분포의 가정이 충족되지 않을 경우에도 신뢰할 수 있는 결과를 제공한다. 하지만 비모수적 검정은 모수적 검정에 비해 덜 강력할 수 있으며, 특히 데이터가 정규분포를 따르고 샘플 크기가 충분히 큰 경우에는 모수적 검정보다 덜 민감하다. 또한, 비모수적 검정은 효과 크기(예: 평균 차이)를 직접적으로 계산하지 않고, 순위 기반 비교만 수행하기 때문에 결과의 해석이 모수적 검정보다 제한적일 수 있다.
결론적으로, 비모수적 검정은 데이터가 정규성 가정을 충족하지 않거나, 샘플 크기가 작아 모수적 검정을 수행하기 어려운 경우 유용한 도구이다. 다양한 검정 방법을 통해 데이터의 특성과 분석 목적에 따라 적절한 방법을 선택하여 사용해야 한다. 비모수적 검정은 유연성과 적용 범위가 넓다는 장점이 있으나, 가용한 데이터에 따라 분석 방법을 신중히 결정해야 한다.
1.2.1 Mann-Whitney U test
Mann-Whitney U 검정은 두 독립적인 집단 간 차이가 통계적으로 유의미한지를 비교하기 위한 비모수적 검정이다. 이는 데이터가 정규분포를 따르지 않거나, 이상치(outlier)가 존재할 때에도 신뢰할 수 있는 결과를 제공한다. Mann-Whitney U 검정은 두 집단의 데이터 순위를 비교하여, 한 집단의 데이터 값이 다른 집단보다 유의미하게 크거나 작은지를 평가한다. 이 검정은 모수적 검정인 독립 t-검정의 비모수적 대안으로 널리 사용된다.
Mann-Whitney U 검정의 귀무가설은 "두 집단 간 분포가 동일하다"이며, 대립가설은 "한 집단이 다른 집단보다 크거나 작다"이다. 이 검정은 순위 기반으로 작동하므로, 데이터의 실제 값 대신 각 데이터의 상대적 순서를 사용한다. 먼저 두 집단의 데이터를 결합하고 순위를 부여한 뒤, 각 집단의 순위 합을 계산하여 U-값을 구한다. 작은 U-값일수록 두 집단 간 차이가 클 가능성이 높다. U-값을 기준으로 p-값을 계산하여 유의수준과 비교하면, 두 집단 간 차이가 통계적으로 유의미한지 여부를 판단할 수 있다.
두 독립적인 학습 방법(A와 B)이 학생들의 시험 점수에 미치는 영향을 비교한다고 가정하자. 다음은 각 집단의 점수이다:
- 학습 방법 A 그룹: [85, 87, 89, 90, 86]
- 학습 방법 B 그룹: [78, 81, 79, 80, 77]
두 그룹의 점수를 합쳐 정렬하고 순위를 매긴다:
- 데이터: [77, 78, 79, 80, 81, 85, 86, 87, 89, 90]
- 순위: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
각 그룹의 순위 합:
- 학습 방법 A: 6+7+8+9+10=406 + 7 + 8 + 9 + 10 = 40
- 학습 방법 B: 1+2+3+4+5=151 + 2 + 3 + 4 + 5 = 15
다음은 파이썬에서 Mann-Whitney U 검정을 수행하는 예제이다. 이 코드는 두 독립 집단 간의 차이를 검정하기 위해 scipy 라이브러리의 mannwhitneyu 함수를 사용한다.
from scipy.stats import mannwhitneyu
# 데이터 정의 (두 독립 집단의 점수)
group_1 = [85, 87, 89, 90, 86] # 집단 1
group_2 = [78, 81, 79, 80, 77] # 집단 2
# Mann-Whitney U 검정 수행
u_stat, p_value = mannwhitneyu(group_1, group_2, alternative='two-sided')
# 결과 출력
print(f"U-statistic: {u_stat:.2f}")
print(f"P-value: {p_value:.4f}")
# 유의수준 설정 (예: 0.05)
alpha = 0.05
if p_value < alpha:
print("결과: 두 집단 간 차이는 통계적으로 유의미합니다.")
else:
print("결과: 두 집단 간 차이는 통계적으로 유의미하지 않습니다.")
데이터 정의: group_1과 group_2는 두 독립 집단의 점수 데이터이다
Mann-Whitney U 검정 수행: mannwhitneyu 함수는 두 독립 집단 간 순위를 비교하여 U-값과 p-값을 계산한다. alternative='two-sided'는 양측 검정을 수행하도록 설정한다.
결과 출력: U-값(U)과 p-값()을 출력한다. p-값이 사전에 설정한 유의수준(α=0.05)보다 작으면, 두 집단 간 차이가 통계적으로 유의미하다고 결론짓는다.
이 결과는 두 집단 간 차이가 우연히 발생했을 확률(p-값)이 0.05보다 작음을 나타낸다. 따라서, 두 집단 간 평균 또는 중앙값에 유의미한 차이가 있다고 결론지을 수 있다. Mann-Whitney U 검정은 데이터가 정규성을 만족하지 않거나, 이상치가 포함된 경우에도 신뢰할 수 있는 결과를 제공한다. 이를 통해 두 독립 집단 간 차이를 효과적으로 분석할 수 있다.
1.2.2 Wilcoxon rank sum test
Wilcoxon Rank Sum Test는 두 독립 집단 간 차이를 비교하기 위한 비모수적 검정 방법으로, Mann-Whitney U 검정과 동일한 통계적 가정을 공유한다. 이 검정은 데이터의 분포에 대한 가정을 필요로 하지 않으며, 순위를 기반으로 두 집단 간의 차이를 평가한다. 주로 데이터가 정규성을 만족하지 않거나, 샘플 크기가 작아 모수적 검정을 적용하기 어려운 상황에서 사용된다. 이 검정은 두 집단의 데이터를 결합하여 순위를 매긴 후, 각 집단의 순위 합을 비교하여 집단 간 차이가 유의미한지를 판단한다.
Wilcoxon Rank Sum Test의 귀무가설은 "두 집단 간 분포가 동일하다"이며, 대립가설은 "한 집단이 다른 집단보다 크거나 작다"이다. 검정 과정에서 데이터를 순서대로 정렬한 뒤, 각 데이터에 순위를 부여하고, 이를 기반으로 통계량(W-값)을 계산한다. 계산된 W-값은 순위 합을 기반으로 하며, 이를 통해 두 집단 간 차이가 우연히 발생할 확률(p-값)을 도출한다.
두 학습 방법(A와 B)이 학생들의 성적에 미치는 영향을 비교하려 한다고 가정하자. 각 학습 방법에 대한 점수는 다음과 같다:
- 학습 방법 A: [85, 87, 89, 86]
- 학습 방법 B: [78, 80, 79, 77]
1. 데이터 순위화
두 집단의 데이터를 결합하고 순위를 매긴다:
- 데이터: [77, 78, 79, 80, 85, 86, 87, 89]
- 순위: [1, 2, 3, 4, 5, 6, 7, 8]
각 집단의 순위 합:
- 학습 방법 A: RA=5+6+7+8=26R_A = 5 + 6 + 7 + 8 = 26
- 학습 방법 B: RB=1+2+3+4=10R_B = 1 + 2 + 3 + 4 = 10
다음은 파이썬에서 Wilcoxon Rank Sum Test를 수행하는 예제 코드이다. 이 검정은 scipy 라이브러리의 ranksums 함수를 사용하여 두 독립 집단의 차이를 평가한다.
from scipy.stats import ranksums
# 두 집단의 데이터 정의
group_1 = [85, 87, 89, 86] # 집단 1
group_2 = [78, 80, 79, 77] # 집단 2
# Wilcoxon Rank Sum Test 수행
statistic, p_value = ranksums(group_1, group_2)
# 결과 출력
print(f"Statistic (Z): {statistic:.2f}")
print(f"P-value: {p_value:.4f}")
# 유의 수준 설정 (예: 0.05)
alpha = 0.05
if p_value < alpha:
print("결과: 두 집단 간 차이는 통계적으로 유의미합니다.")
else:
print("결과: 두 집단 간 차이는 통계적으로 유의미하지 않습니다.")
코드 설명
- 데이터 정의:
- group_1과 group_2는 두 독립 집단의 데이터를 나타낸다.
- Wilcoxon Rank Sum Test 수행:
- ranksums 함수는 두 독립 집단의 순위를 기반으로 검정을 수행하며, Z-통계량과 p-값을 반환한다.
- statistic: Z-값, 두 집단 간 순위 합 차이를 표준화한 값.
- p_value: 귀무가설("두 집단의 분포가 동일하다")을 기각할 확률.
- 결과 출력:
- Z-값과 p-값을 출력하여 검정 결과를 확인한다.
- p-값이 유의 수준(예: 0.05)보다 작으면, 두 집단 간 차이가 통계적으로 유의미하다고 결론지을 수 있다.
위 결과에서 p-값이 0.05보다 작기 때문에, 두 집단 간 차이가 유의미하다고 결론내릴 수 있다. 이는 학습 방법이나 처리 방식 등에서 실제 차이가 존재함을 시사한다.
Wilcoxon Rank Sum Test는 데이터가 정규성을 만족하지 않거나 이상치가 포함된 경우에도 신뢰할 수 있는 결과를 제공하며, 비모수적 데이터 분석의 강력한 도구로 활용된다.
1.2.3 Kruskal-Wallis test
Kruskal-Wallis 검정은 세 개 이상의 독립 집단 간의 차이가 통계적으로 유의미한지를 검토하기 위한 비모수적 검정 방법이다. 이는 데이터가 정규분포를 따르지 않거나, 각 집단의 분산이 동일하지 않을 때 사용되며, 모수적 검정인 ANOVA의 비모수적 대안으로 간주된다. Kruskal-Wallis 검정은 데이터의 순위를 기반으로 하며, 각 집단의 순위 합을 비교하여 집단 간 차이를 평가한다.
귀무가설은 "모든 집단의 분포가 동일하다"이며, 대립가설은 "적어도 하나의 집단이 다른 분포를 가진다"이다. Kruskal-Wallis 검정은 데이터의 값 대신 순위(rank)를 사용하여 집단 간 차이를 평가하므로, 이상치나 정규성을 만족하지 않는 데이터에도 강건하다. 검정 결과로 계산된 H-값을 사용하여 귀무가설을 기각할지를 결정하며, 유의수준(p-값)을 기준으로 해석한다.
쉬운 예시
세 가지 학습 방법(A, B, C)의 효과를 비교하기 위해 각 방법에 대해 학생들의 시험 점수를 다음과 같이 수집했다고 가정하자:
- 학습 방법 A: [85, 87, 89, 86]
- 학습 방법 B: [78, 80, 79, 77]
- 학습 방법 C: [92, 91, 93, 94]
1. 데이터 순위화
모든 데이터를 결합하여 순위를 매긴다:
- 데이터: [77, 78, 79, 80, 85, 86, 87, 89, 91, 92, 93, 94]
- 순위: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
각 집단의 순위 합:
- 학습 방법 A (RAR_A): 5+6+7+8=265 + 6 + 7 + 8 = 26
- 학습 방법 B (RBR_B): 1+2+3+4=101 + 2 + 3 + 4 = 10
- 학습 방법 C (RCR_C): 9+10+11+12=429 + 10 + 11 + 12 = 42
다음은 파이썬에서 Kruskal-Wallis 검정을 수행하는 예제 코드이다. scipy 라이브러리의 kruskal 함수를 사용하여 세 개 이상의 독립 집단 간 차이를 검정한다.
from scipy.stats import kruskal
# 세 집단의 데이터 정의
group_A = [85, 87, 89, 86] # 학습 방법 A
group_B = [78, 80, 79, 77] # 학습 방법 B
group_C = [92, 91, 93, 94] # 학습 방법 C
# Kruskal-Wallis 검정 수행
statistic, p_value = kruskal(group_A, group_B, group_C)
# 결과 출력
print(f"Kruskal-Wallis H-statistic: {statistic:.2f}")
print(f"P-value: {p_value:.4f}")
# 유의 수준 설정 (예: 0.05)
alpha = 0.05
if p_value < alpha:
print("결과: 세 집단 간 차이는 통계적으로 유의미합니다.")
else:
print("결과: 세 집단 간 차이는 통계적으로 유의미하지 않습니다.")
코드 설명
- 데이터 정의:
- group_A, group_B, group_C는 각각 세 독립 집단의 데이터를 나타낸다.
- Kruskal-Wallis 검정 수행:
- kruskal 함수는 Kruskal-Wallis H-값과 p-값을 계산하여 반환한다.
- statistic: H-값, 집단 간 순위 합 차이를 기반으로 계산된 통계량.
- p_value: 귀무가설("모든 집단의 분포는 동일하다")을 기각할 확률.
- 결과 출력:
- 계산된 H-값과 p-값을 출력한다.
- p-값이 유의 수준(예: 0.05)보다 작으면, 세 집단 간 차이가 통계적으로 유의미하다고 결론지을 수 있다.
예상 결과
위 결과에서 p-값이 0.05보다 작으므로, 세 집단 간 차이가 통계적으로 유의미하다고 결론 내릴 수 있다. 이는 적어도 하나의 집단이 다른 집단과 유의미한 차이를 가진다는 것을 의미한다.
Kruskal-Wallis 검정은 비모수적 방법으로, 데이터가 정규성을 만족하지 않거나 이상치가 포함된 경우에도 안정적이며, 세 개 이상의 독립 집단을 비교할 때 유용하다. 추가적으로, 차이가 발생한 구체적인 집단을 식별하기 위해 사후 검정(Post-hoc Test)을 수행할 수 있다.
1.2.4 Friedman test
Friedman 검정은 세 개 이상의 관련 집단(예: 동일한 대상에서 여러 조건에 대한 반복 측정 데이터)을 비교할 때 사용하는 비모수적 검정이다. 이는 데이터가 정규성을 만족하지 않거나, 반복 측정된 데이터에서 분포 가정이 어려운 경우에도 적용 가능하다. Friedman 검정은 모수적 검정인 반복 측정 ANOVA의 비모수적 대안으로 간주되며, 데이터를 순위로 변환해 각 조건 간 차이를 평가한다.
Friedman 검정의 귀무가설은 "모든 조건의 측정값 분포가 동일하다"이며, 대립가설은 "적어도 하나의 조건이 다른 분포를 가진다"이다. 검정 과정에서 각 조건별 데이터에 순위를 부여하고, 조건별 순위 합을 계산하여 통계량(χ²-값)을 도출한다. 계산된 χ²-값은 카이제곱 분포를 따르며, 유의수준(p-값)을 기준으로 귀무가설을 기각할지 결정한다.
쉬운 예시
세 가지 학습 방법(A, B, C)에 대해 동일한 학생들이 각각 시험을 보았다고 가정하자. 학생들의 점수는 다음과 같다:
- 학생 1: A=85, B=80, C=92
- 학생 2: A=87, B=81, C=91
- 학생 3: A=89, B=79, C=93
- 학생 4: A=86, B=77, C=94
1. 순위 부여
각 학생별로 점수에 순위를 매긴다:
- 학생 1: A=2, B=1, C=3
- 학생 2: A=2, B=1, C=3
- 학생 3: A=2, B=1, C=3
- 학생 4: A=2, B=1, C=3
조건별 순위 합:
- 학습 방법 A (RAR_A): 2+2+2+2=82 + 2 + 2 + 2 = 8
- 학습 방법 B (RBR_B): 1+1+1+1=41 + 1 + 1 + 1 = 4
- 학습 방법 C (RCR_C): 3+3+3+3=123 + 3 + 3 + 3 = 12
다음은 파이썬에서 Friedman Test를 수행하는 예제 코드이다. 이 코드는 scipy 라이브러리의 friedmanchisquare 함수를 사용하여 세 개 이상의 관련 집단 간 차이를 검정한다.
from scipy.stats import friedmanchisquare
# 동일한 대상에서 측정된 세 조건의 데이터
group_A = [85, 87, 89, 86] # 학습 방법 A
group_B = [80, 81, 79, 77] # 학습 방법 B
group_C = [92, 91, 93, 94] # 학습 방법 C
# Friedman Test 수행
statistic, p_value = friedmanchisquare(group_A, group_B, group_C)
# 결과 출력
print(f"Friedman chi-square statistic: {statistic:.2f}")
print(f"P-value: {p_value:.4f}")
# 유의 수준 설정 (예: 0.05)
alpha = 0.05
if p_value < alpha:
print("결과: 조건 간 차이는 통계적으로 유의미합니다.")
else:
print("결과: 조건 간 차이는 통계적으로 유의미하지 않습니다.")
코드 설명
- 데이터 정의:
- group_A, group_B, group_C는 동일한 대상에서 세 가지 조건(학습 방법)에 대해 측정된 데이터를 나타낸다.
- Friedman Test 수행:
- friedmanchisquare 함수는 Friedman 검정을 수행하며, χ²-통계량(statistic)과 p-값(p_value)을 반환한다.
- 결과 출력:
- χ²-값과 p-값을 출력한다.
- p-값이 유의 수준(예: 0.05)보다 작으면, 조건 간 차이가 통계적으로 유의미하다고 결론짓는다.
예상 결과
위 결과에서 p-값이 0.05보다 작으므로, 세 조건 간 차이가 통계적으로 유의미하다고 결론 내릴 수 있다. 이는 적어도 하나의 조건이 다른 조건과 유의미한 차이를 가진다는 것을 의미한다.
Friedman Test는 동일한 대상에서 여러 조건을 비교할 때 유용하며, 데이터가 정규성을 만족하지 않거나 이상치가 포함된 경우에도 안정적으로 동작한다. 추가적으로, 사후 검정을 통해 조건 간 차이를 더 구체적으로 분석할 수 있다.
3. 회귀 분석 ( Regression Analysis )
**회귀 분석(Regression Analysis)**은 변수 간의 관계를 수량화하고 모델링하기 위한 통계적 방법이다. 회귀 분석은 주로 독립 변수(설명 변수)가 종속 변수(결과 변수)에 미치는 영향을 설명하거나 예측하기 위해 사용된다. 이는 데이터에 기반한 관계를 추정하고, 변수 간의 상호작용을 이해하며, 결과를 예측하는 데 중요한 도구이다.
회귀 분석의 기본 가정은 독립 변수와 종속 변수 간에 일정한 관계가 존재하며, 잔차(실제값과 예측값의 차이)가 정규분포를 따르고 독립적으로 분포된다는 것이다. 회귀 분석은 단순한 선형 관계부터 복잡한 비선형 관계까지 다양한 데이터 관계를 모델링할 수 있다.
회귀 분석의 주요 활용
- 관계 분석:
- 독립 변수와 종속 변수 간의 관계를 정량적으로 이해한다.
- 예: 광고비와 매출 간의 관계.
- 예측:
- 새로운 데이터에 대해 종속 변수의 값을 예측한다.
- 예: 주택 크기와 가격 데이터를 기반으로 미래의 주택 가격 예측.
- 변수의 영향력 평가:
- 독립 변수가 종속 변수에 미치는 영향을 정량화하고, 중요한 변수를 식별한다.
- 모델 적합성 평가:
- R2R^2(결정계수): 모델이 종속 변수의 변동성을 얼마나 잘 설명하는지 평가.
- p-값: 독립 변수의 효과가 통계적으로 유의미한지 검정.
쉬운 예시
한 가구의 월 소득과 지출 간의 관계를 단순 선형 회귀 분석으로 모델링한다고 가정하자:
- 데이터: 소득(xx) = [200, 300, 400, 500, 600], 지출(yy) = [100, 150, 200, 250, 300].
- 회귀식 추정:
- 회귀식: y=50+0.5xy = 50 + 0.5x.
- 여기서 β0=50\beta_0 = 50: 소득이 0일 때 예상 지출.
- β1=0.5\beta_1 = 0.5: 소득이 100 단위 증가할 때 지출이 평균적으로 50 증가.
- 해석:
- 소득과 지출 간의 관계가 선형임을 확인.
- 예측: 소득이 700일 경우 지출은 y=50+0.5(700)=400y = 50 + 0.5(700) = 400.
- 잔차 분석:
- 잔차: 실제값과 예측값의 차이.
- 잔차가 정규분포를 따르고 랜덤하게 분포한다면 모델 적합성이 높다고 평가.
결론
회귀 분석은 변수 간 관계를 이해하고 예측 모델을 구축하는 데 필수적인 통계 기법이다. 다양한 유형의 회귀 분석은 데이터의 특성과 분석 목적에 따라 적절히 선택할 수 있으며, 이를 통해 데이터 기반의 의사결정을 지원할 수 있다. 분석 과정에서 가정(정규성, 독립성, 선형성 등)을 충족하는지 확인하고, 필요 시 모델 조정이나 대안을 고려해야 한다.
다음은 파이썬에서 **단순 선형 회귀 분석(Simple Linear Regression)**을 수행하는 예제 코드이다. 이 코드는 scikit-learn 라이브러리를 사용하여 소득과 지출 간의 관계를 모델링하고 예측한다.
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score
# 데이터 정의 (소득: x, 지출: y)
x = np.array([200, 300, 400, 500, 600]).reshape(-1, 1) # 독립 변수 (2차원 배열로 변환)
y = np.array([100, 150, 200, 250, 300]) # 종속 변수
# 선형 회귀 모델 생성 및 학습
model = LinearRegression()
model.fit(x, y)
# 회귀 계수 및 절편 출력
print(f"기울기 (slope, β1): {model.coef_[0]:.2f}")
print(f"절편 (intercept, β0): {model.intercept_:.2f}")
# 예측값 계산
y_pred = model.predict(x)
# 모델 평가
mse = mean_squared_error(y, y_pred)
r2 = r2_score(y, y_pred)
print(f"평균 제곱 오차 (MSE): {mse:.2f}")
print(f"결정 계수 (R^2): {r2:.2f}")
# 시각화
plt.scatter(x, y, color='blue', label='실제 데이터')
plt.plot(x, y_pred, color='red', label='회귀선 (예측값)')
plt.title("단순 선형 회귀 분석")
plt.xlabel("소득")
plt.ylabel("지출")
plt.legend()
plt.grid(alpha=0.3)
plt.show()
코드 설명
- 데이터 정의:
- 소득(xx)과 지출(yy) 데이터를 정의한다.
- xx는 2차원 배열로 변환하여 모델 입력 형식에 맞춘다.
- 모델 생성 및 학습:
- LinearRegression 클래스를 사용하여 선형 회귀 모델을 생성한다.
- fit 메서드를 통해 데이터를 학습시킨다.
- 회귀 계수 및 절편:
- coef_와 intercept_를 통해 기울기(β1\beta_1)와 절편(β0\beta_0)을 출력한다.
- 모델 평가:
- mean_squared_error로 평균 제곱 오차(MSE)를 계산하여 모델의 예측 오차를 평가한다.
- r2_score로 결정 계수(R2R^2)를 계산하여 모델이 데이터를 얼마나 잘 설명하는지 평가한다.
- 시각화:
- 실제 데이터와 회귀선을 플롯으로 시각화하여 모델의 적합성을 확인한다.
예상 출력
그래프 설명
- 파란 점: 실제 데이터(소득과 지출의 관계).
- 빨간 선: 모델이 학습한 회귀선(예측값).
확장
이 예제는 단순 선형 회귀를 다룬다. 다중 회귀 분석을 수행하려면 독립 변수를 여러 개로 정의하고 동일한 프로세스를 적용하면 된다. 또한, 모델의 적합성을 높이기 위해 데이터 전처리(스케일링, 이상치 처리 등)나 특성 엔지니어링을 고려할 수 있다. 이를 통해 회귀 분석의 활용 범위를 넓힐 수 있다.
4. 다중 비교 교정 (Multiple Comparison Correction)
다중 비교 교정(Multiple Comparison Correction)은 여러 가설 검정을 동시에 수행할 때 발생하는 **1종 오류(Type I Error)**를 통제하기 위한 통계적 방법이다. 1종 오류란, 실제로는 효과가 없는데 효과가 있다고 잘못 결론 내리는 오류를 의미한다. 다중 비교를 수행할 경우, 검정의 수가 많아질수록 우연히 유의미한 결과(p-값 < 0.05)가 나올 확률이 증가하기 때문에, 이러한 오류를 통제하는 과정이 필수적이다.
다중 비교 교정은 검정의 전체적인 유의수준(Family-Wise Error Rate, FWER)을 일정하게 유지하거나, 잘못된 발견율(False Discovery Rate, FDR)을 통제하는 방식으로 이루어진다. 주요 방법은 다음과 같다:
- Bonferroni Correction: 가장 널리 사용되는 방법으로, 전체 유의수준(α\alpha)을 검정의 수(mm)로 나누어 각 검정의 유의수준을 α/m\alpha/m로 설정한다. 예를 들어, 10개의 가설 검정을 수행할 때, 각 검정의 유의수준은 0.05/10 = 0.005로 조정된다. Bonferroni 교정은 보수적이며, 1종 오류를 효과적으로 통제하지만, 검정의 수가 많을 경우 검정력이 크게 감소할 수 있다.
- Holm-Bonferroni Method: Bonferroni 교정을 개선한 방법으로, 가장 작은 p-값부터 순서대로 검토하며 점진적으로 유의수준을 조정한다. 이는 보수성을 줄이고 더 높은 검정력을 제공한다.
- False Discovery Rate (FDR): Benjamini-Hochberg Procedure와 같은 방법으로, 1종 오류를 통제하는 대신 잘못된 발견 비율(FDR)을 일정 수준으로 유지한다. 이는 다중 검정에서 더 높은 검정력을 제공하며, 특히 유전체학과 같이 대규모 데이터에서 유용하다.
- Šidák Correction: Bonferroni 교정의 변형으로, 전체 유의수준이 1종 오류를 초과하지 않도록 설정한다. 개별 유의수준은 α=1−(1−FWER)1/m\alpha = 1 - (1 - \text{FWER})^{1/m}로 계산된다.
- Tukey's Honest Significant Difference (HSD): ANOVA에서 여러 그룹 간 평균을 비교할 때 사용하는 사후 검정(Post-hoc Test)으로, 1종 오류를 통제하면서 그룹 간 차이를 분석한다.
- Hochberg Method: Holm-Bonferroni 방법의 역순으로, 가장 큰 p-값부터 점진적으로 유의수준을 조정한다.
다중 비교 교정의 필요성
다중 비교 교정이 필요한 이유를 설명하기 위해, 20개의 독립적인 가설 검정을 수행한다고 가정하자. 각 검정의 유의수준(α\alpha)이 0.05일 때, 적어도 하나의 검정에서 1종 오류가 발생할 확률은 0.641이다. 즉, 64%의 확률로 잘못된 유의미한 결과가 발생할 수 있으므로, 이러한 오류를 줄이기 위해 다중 비교 교정이 필수적이다.
5. 정규성 검정 (Normality Test)
**정규성 검정(Normality Test)**은 데이터가 정규분포를 따르는지 확인하기 위한 통계적 검정 방법이다. 정규분포는 통계 분석에서 중요한 가정을 이루는 경우가 많아, 데이터가 정규성을 만족하는지 확인하는 것이 필수적이다. 특히, t-검정, ANOVA, 회귀 분석과 같은 **모수적 검정(Parametric Test)**은 정규성을 가정하므로, 데이터가 이 가정을 만족하지 않을 경우 분석 결과의 신뢰성이 떨어질 수 있다.
정규성 검정의 귀무가설은 "데이터는 정규분포를 따른다"이며, 대립가설은 "데이터는 정규분포를 따르지 않는다"이다. 계산된 p-값이 유의수준(예: 0.05)보다 크면 귀무가설을 기각하지 않으므로 데이터가 정규분포를 따른다고 판단한다.
정규성 검정 방법
다양한 정규성 검정 방법이 있으며, 주요 방법은 다음과 같다:
- 샤피로-윌크 검정(Shapiro-Wilk Test):
- 소규모 데이터(샘플 크기 n≤50n \leq 50)에서 주로 사용되는 강력한 정규성 검정 방법이다.
- 검정 통계량은 데이터와 정규분포에 가장 가까운 이론적 분포 간의 차이를 측정한다.
- 콜모고로프-스미르노프 검정(Kolmogorov-Smirnov Test):
- 데이터의 누적 분포 함수(CDF)와 이론적 정규분포의 CDF 간의 최대 차이를 측정한다.
- 데이터가 크거나 이상치가 많은 경우 덜 민감하다.
- 안데르센-달링 검정(Anderson-Darling Test):
- 샘플 데이터의 극단값에 민감한 정규성 검정으로, 정규분포와의 차이를 평가한다.
- p-값 대신 임계값을 사용하여 정규성을 판단한다.
- 데이비스-피어슨 검정(D’Agostino and Pearson Test):
- 왜도(Skewness)와 첨도(Kurtosis)를 결합하여 정규성을 평가한다.
- 중간 크기의 데이터에 적합하다.
- Q-Q 플롯(Quantile-Quantile Plot):
- 데이터를 정규분포와 비교하는 시각적 방법이다.
- 데이터가 정규성을 만족하면 점들이 대각선에 가까운 직선을 형성한다.
'Human-Computer Interaction > User Evaluation' 카테고리의 다른 글
User Evaluation [4]: 평가 척도 (Evaluation scales) (0) | 2025.01.08 |
---|---|
User Evaluation [2]: 양적 분석 (Quantitative Analysis) (0) | 2025.01.02 |
User Evaluation [1] : 질적 분석 (Qualititative) (1) | 2024.12.29 |
User Evaluation [0] : HCI 연구에서의 사용자 평가 (0) | 2024.12.29 |