수업외 정리

24-01-11 가설검정

glenlee 2024. 1. 12. 01:01

2표본 문제에 관한 가설검정

  • 대응표본 : 정규분포를 가정할 수 있음
    • 정규성 검정 통과 : 대응표본 t-검정
    • 정규성 검정 통과 실패 : 비모수 검정, 윌콕슨의 부호순위검정
  • 독립표본 : 정규분포를 가정할 수 있음
    • 정규성 검정 통과 : 독립비교 t-검정
    • 정규성 검정 통과 실패 : 맨-위트니의 U 검정
  •  
    • A 학생은 친구 20명에게 1주일간 근력 운동을 하게 함 (intervention, 개입)
    • 운동 전후에 집중력을 측정하는 테스트 받게 됨
    • 가설검정
    • 귀무가설: 운동 전후 집중력 평균의 차이가 없을 것이다(전=후, 차이=0)
    • 대립가설1: 운동 전후 집중력 평균의 차이가 있을 것이다(전!=후, 차이!=0)....
  • 대응표본 t-검정

데이터 불러오기 
training_rel = pd.read_csv('data/ch11_training_rel.csv')
training_rel['차'] = training_rel['후'] - training_rel['전']
training_rel

 

 

 

from scipy import stats
t, p = stats.ttest_1samp(training_rel['차'], 0)
t, p

 

(2.204154108716127, 0.04004419061842953)

 

t, p = stats.ttest_rel(training_rel['후'], training_rel['전'])
t, p

 

(2.204154108716127, 0.04004419061842953)

보고서 작성

  • t-통계량 / p-value 값
  •  p 값 (Significance Probability, 유의 확률, 검정 확률)

http://www.ktword.co.kr/test/view/view.php?nav=2&no=6634&sh=pvalue

 

p 값

Significance Probability, 유의 확률, 검정 확률

www.ktword.co.kr

 

1. t 검정 (t Test)

  ㅇ 모집단의 분산 또는 표준편차를 알지 못할 때, 모평균 검정을 위해 사용되는 방법

 

http://www.ktword.co.kr/test/view/view.php?nav=2&no=2425&sh=t+%EA%B0%92

 

t 검정

1. t 검정 (t Test) ㅇ 모집단의 분산 또는 표준편차를 알지 못할 때, 모평균 검정을 위해 사용되는 방법 ※ 모평균 검정 이란? - 모평균이 어느 값과 일치하는지 여부 - 모평균이 어느 값으로 변화했

www.ktword.co.kr

 

 

독립비교 t-검정

  • 교재는 p318
  • 학생이 부쩍 늘었음
    • A 학생 그룹 인문계열
    • B 학생 그룹 체육계열
  • A 그룹, B 그룹 사이에 집중력 테스트의 평균에서 차이가 나지 않을까 생각하여 테스트를 함
  • 이 데이터로부터 어떤 검정을 수행해야 A 학생과 B 학생 학급의 집중력에 유의한 차이가 있는지 확인
  • 가설설정
    • 귀무가설 : A그룹의 평균과 B그룹의 평균 차이는 없다.
    • 대립가설 : A그룹의 평균과 B그룹의 평균 차이는 있다.
  • 독립비교 t-검정 두가지 가정
    • 1) 각 그룹 데이터의 정규성을 검정
    • 2) 두 그룹의 분산이 같다 (=등분산성 검정), levene 검정 시행하더라!
training_ind = pd.read_csv('data/ch11_training_ind.csv')
training_ind.head() # training_ind.shape

ind= df 의 인덱스

 

A B 의 

t, p = stats.ttest_ind(training_ind['A'], training_ind['B'], equal_var = True) # 등분산성이 같다!
t, p

(-1.7608157246524712, 0.08631600572195147)

p 값이 0.08 로 0.05보다높다

- 결론은 두 그룹의 평균 차이는 없더라, 귀무가설 채택

# levene 검정 이후, 살펴봤더니 등분산성이 다르더라!

t, p = stats.ttest_ind(training_ind['A'], training_ind['B'], equal_var = False) # 등분산성이 같다!
t, p

(-1.760815724652471, 0.08695731107259362)

 

 

## 비모수 검정
- 모수 검정에서 각 가정을 만족시키지 못할 때, 비모수검정을 쓰더라

윌콕슨의 부호순위검정

  • 대응표본에서 차이에 정규분포를 만족시키지 못할 때
    • 평균차이 아님(X)
    • 중앙값 차이에 대한 검정 (O)
    • 중앙값, 50%에 해당하는 값을
training_rel = pd.read_csv('data/ch11_training_rel.csv')
toy_df = training_rel[:6].copy()           :6 까지 슬라이싱하고 새로 복사한다
toy_df['차'] = toy_df['후'] - toy_df['전']
toy_df

# 순위 적용
diff = toy_df['후'] - toy_df['전']
rank = stats.rankdata(abs(diff)).astype(int)
toy_df['순위'] = rank
toy_df

rank = stats.rankdata(abs(diff)).astype(int)

 

주어진 코드 라인은 stats 모듈의 rankdata 함수를 사용하여 diff 배열 또는 리스트의 절대 차이의 순위를 계산하는 것으로 보입니다. astype(int) 부분은 결과를 정수로 변환하는 것으로 추정됩니다.

 

abs = 절댓값(absolute value)

diff는 : difference의 축약어로, 두 값 간의 차이를 나타내는 용어

일반적으로 "diff"는 주어진 두 값을 뺀 결과로 나타내어집니다. 예를 들어, 만약 A와 B가 있을 때, A와 B의 차이는 A - B입니다. 이 차이는 양수, 음수 또는 0이 될 수 있으며, 두 값 간의 거리를 나타내는 중요한 개념 중 하나입니다.

 

 

랭크데이터의 절대값의 차를 구하고 정수 변환하는 코드

 

 

 

 

 

import numpy as np

r_minus = np.sum((diff < 0) * rank)
r_plus = np.sum((diff > 0) * rank)

r_minus, r_plus # 검정통계량 8
(8, 13)

r_minusdiff의 값이 0보다 작은 경우에 해당하는 순위의 합

r_plusdiff의 값이 0보다 큰 경우에 해당하는 순위의 합

np.sum 함수는 각 조건에 따라 계산된 순위 배열을 합하여 해당 검정통계량을 계산

 

 

 

 

 

 

toy_df['후'] = toy_df['전'] + np.arange(1, 7)
diff = toy_df['후'] - toy_df['전']
rank = stats.rankdata(abs(diff)).astype(int)
toy_df['차'] = diff
toy_df['순위'] = rank
# toy_df

r_minus = np.sum((diff < 0) * rank)
r_plus = np.sum((diff > 0) * rank)

r_minus, r_plus # 검정통계량 8
(0, 21)
 

 

 

 

 

 

 
toy_df['후'] = toy_df['전'] + [1, -2, -3, 4, 5, -6]
diff = toy_df['후'] - toy_df['전']
rank = stats.rankdata(abs(diff)).astype(int)
toy_df['차'] = diff
toy_df['순위'] = rank
toy_df

 

 

 

 

r_minus = np.sum((diff < 0) * rank)
r_plus = np.sum((diff > 0) * rank)

r_minus, r_plus # 검정통계량 10
(11, 10)