일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 통계학
- 아티클스터디
- AB테스트
- DATE_SUB
- f-string
- 이중for문
- 프로그래머스
- Join
- ★
- Til
- SQL
- 내일배움일지
- 한줄for문
- python
- 리스트
- 시각화
- Set
- 가설검정
- Max
- 반복문
- 선형회귀
- 내일배움캠프
- 데이터시각화
- 다중공선성
- 내배캠_학습기록
- 태블로
- 데이터전처리
- SQLD
- Leetcode
- map
- Today
- Total
노력에는 지름길이 없으니까요
3.2 가설검정 본문
이 데이터가 의미가 있다고 볼 수 있는지, ... 가설을 세워서 그걸 검정해보는 것...
문제 발생 -> 가설을 세움 -> 귀무가설, 대립가설로 분류하고 둘 중 하나를 선택해야 한다. (정반대 중 하나!) -> 선택해서 결론을 내리는 것임
☑️ 가설검정
표본 데이터를 통해 모집단의 가설을 검증하는 과정
즉, 데이터가 특정 가설을 지지하는지 평가하는 과정
귀무가설(H0)과 대립가설(H1)을 설정하고, 귀무가설을 기각할지를 결정
데이터 분석시 두가지 전략을 취할 수 있음
확증적 자료분석
미리 가설들을 먼저 세운 다음 가설을 검증해 나가는 분석
탐색적 자료분석(EDA)
가설을 먼저 정하지 않고 데이터를 탐색해보면서 가설 후보들을 찾고 데이터의 특징을 찾는 것
☑️ 단계
- 귀무가설(H0)과 대립가설(H1) 설정
- 유의수준(α) 결정 -> 대략 0.05
- 검정통계량 계산
- p-값과 유의수준 비교 -> p값이 더 낮아야 함!
- 결론 도출
☑️ 통계적 유의성
- 통계적 유의성은 결과가 우연히 발생한 것이 아니라 어떤 효과가 실제로 존재함을 나타내는 지표
- 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검정)
'통계학' 카테고리의 다른 글
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 |