노력에는 지름길이 없으니까요

3.2 가설검정 본문

통계학

3.2 가설검정

데건 2024. 8. 2. 15:33
728x90

이 데이터가 의미가 있다고 볼 수 있는지, ... 가설을 세워서 그걸 검정해보는 것...

 

문제 발생 -> 가설을 세움 -> 귀무가설, 대립가설로 분류하고 둘 중 하나를 선택해야 한다. (정반대 중 하나!) -> 선택해서 결론을 내리는 것임

☑️ 가설검정

표본 데이터를 통해 모집단의 가설을 검증하는 과정

즉, 데이터가 특정 가설을 지지하는지 평가하는 과정

귀무가설(H0)과 대립가설(H1)을 설정하고, 귀무가설을 기각할지를 결정

 

 

데이터 분석시 두가지 전략을 취할 수 있음

확증적 자료분석

미리 가설들을 먼저 세운 다음 가설을 검증해 나가는 분석

탐색적 자료분석(EDA)

가설을 먼저 정하지 않고 데이터를 탐색해보면서 가설 후보들을 찾고 데이터의 특징을 찾는 것

 

☑️ 단계

  1. 귀무가설(H0)과 대립가설(H1) 설정
  2. 유의수준(α) 결정 -> 대략 0.05
  3. 검정통계량 계산
  4. p-값과 유의수준 비교 -> p값이 더 낮아야 함!
  5. 결론 도출

☑️ 통계적 유의성

  • 통계적 유의성은 결과가 우연히 발생한 것이 아니라 어떤 효과가 실제로 존재함을 나타내는 지표
  • p값은 귀무 가설이 참일 경우 관찰된 통계치가 나올 확률을 의미
  • 일반적으로 p값이 0.05 미만이면 결과를 통계적으로 유의하다고 판단

☑️ p-값

  • 귀무가설이 참일 때, 관찰된 결과 이상으로 극단적인 결과가 나올 확률
  • 일반적으로 p-값이 유의수준(α)보다 작으면 귀무가설을 기각
  • 유의수준으로 많이 사용하는 값이 0.05

 

☑️ p-값을 통한 유의성 확인

  • p-값이 0.03이라면, 3%의 확률로 우연히 이러한 결과가 나올 수 있음
  • 일반적으로 0.05 이하라면 유의성이 있다고 봄

☑️ 신뢰구간과 가설검정

신뢰구간과 가설검정은 밀접하게 관련된 개념

둘 다 데이터의 모수(ex. 평균)에 대한 정보를 구하고자 하는 것이지만 접근 방식이 다름

 

신뢰구간

특정 모수가 포함될 범위를 제공

❓여기서 잠깐! 신뢰구간이 무엇일까요~?

신뢰구간은 모집단의 평균이 특정 범위 내에 있을 것이라는 확률을 나타냅니다.

일반적으로 95% 신뢰구간이 사용되며, 이는 모집단 평균이 95% 확률로 이 구간 내에 있음을 의미합니다.

만약 어떤 설문조사에서 평균 만족도가 75점이고, 신뢰구간이 70점에서 80점이라면, 우리는 95% 확률로 실제 평균 만족도가 이 범위 내에 있다고 말할 수 있습니다.

신뢰구간 (Confidence Interval)

 

가설검정

모수가 특정 값과 같은지 다른지 테스트

 


# 기존 약물(A)와 새로운 약물(B) 효과 데이터 생성
A = np.random.normal(50, 10, 100)
B = np.random.normal(55, 10, 100)

# 평균 효과 계산
mean_A = np.mean(A)
mean_B = np.mean(B)

 

#각각의 표본에 대한 평균
print(f"mean_A : {mean_A}")
print(f"mean_B : {mean_B}")

> mean_A : 50.656019069790446
mean_B : 54.946300871976

 

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

print(f"A 평균 효과: {mean_A}")
print(f"B 평균 효과: {mean_B}")
print(f"t-검정 통계량: {t_stat}")
print(f"p-값: {p_value}")

# t-검정의 p-값 확인 (위 예시에서 계산된 p-값 사용)
print(f"p-값: {p_value}")
if p_value < 0.05:
    print("귀무가설을 기각합니다. 통계적으로 유의미한 차이가 있습니다.")
else:
    print("귀무가설을 기각하지 않습니다. 통계적으로 유의미한 차이가 없습니다.")

 

 

갑자기 궁금해서...

프로젝트 진행했던 것중에 유의한지 아닌지 판단이 어려웠던 변수를 한 번 넣어서 비교해봤다.

(이것저것 결과를 살펴보는 게 꽤 재밌다...)

# t-검정 수행
t_stat, p_value = stats.ttest_ind(df_test_standard['Outstanding_Debt'], df_delay_standard['Outstanding_Debt'])

print(f"A 평균 효과: {df_test_standard['Outstanding_Debt'].mean()}")
print(f"B 평균 효과: {df_delay_standard['Outstanding_Debt'].mean()}")
print(f"t-검정 통계량: {t_stat}")
print(f"p-값: {p_value}")

# t-검정의 p-값 확인 (위 예시에서 계산된 p-값 사용)
print(f"p-값: {p_value}")
if p_value < 0.05:
    print("귀무가설을 기각합니다. 통계적으로 유의미한 차이가 있습니다.")
else:
    print("귀무가설을 기각하지 않습니다. 통계적으로 유의미한 차이가 없습니다.")

 

결국 Outstanding_Debt라는 컬럼에 대해서는 모든 그룹에 대해서 차이가 있다.

-> ANOVA 분석에서 가장 유의한 변수로서 이게 1위였던 이유가 이것인 듯 싶었다.

 

 


 

1) t검정이란 무엇인가?

t검정은 두 집단 간의 평균 차이가 통계적으로 유의미한지 확인하는 검정 방법

 

독립표본 t검정과 대응표본 t검정으로 나뉨 -> 하지만 사용하는 코드는 같다!

☑️ 독립표본 t검정

두 독립된 그룹의 평균을 비교

☑️ 대응표본 t검정

동일한 그룹의 사전/사후 평균을 비교

 

☑️ t검정

두 클래스의 시험 성적 비교(독립표본 t검정)

다이어트 전후 체중 비교(대응표본 t검정)

728x90
반응형

'통계학' 카테고리의 다른 글

3.5 카이제곱검정  (0) 2024.08.02
3.4 다중검정  (0) 2024.08.02
3.1 A/B 검정  (0) 2024.08.02
분포를 고르는 방법  (0) 2024.08.01
2.8 푸아송 분포  (0) 2024.08.01