가설검정
모집단에 대한 정보를 알아보기 위하여, 모집단에 대한 어떤 가설을 설정한 뒤에 표본의 통계량을 통해 통계적으로 유의한지 판정하여 그 가설의 채택 여부를 결정하는 통계적 추론 방법.
1) 귀무가설
- 처음부터 버릴 것으로 예상하는 가설
- 직접 검증의 대상이 되는 가설로 연구자가 부정하고자 하는 가설
- 이 약을 먹은 사람과 안먹은 사람의 차이가 없다.
2) 대립가설
- 처음부터 채택할 것으로 예상하는 가설
- 귀무가설에 반대되는 사실로 연구자가 주장하고자 하는 가설
- 이 약을 먹은 사람과 안먹은 사람의 차이가 있다.
3) 유의확률(significance probability)
- p값(p-value)
- 1종 오류를 범할 확률
- 귀무가설을 지지하는 정도
- 유의확률(p값)이 유의수준(alpha)보다 작으면 귀무가설을 기각하고 대립가설을 채택한다.
- "아주 작다" 의 판단 기준이 유의수준이다 → 1%, 5%, 10%
4) 오류의 종류(type of error)
- 1종 오류: 귀무가설이 참인데, 거짓으로 판정하여 귀무가설을 기각할 오류
- 2종 오류: 귀무가설이 거짓인데, 참으로 판정하여 귀무가설을 채택할 오류
5) 유의수준(significance level)
- 알파(alpha)값
- 1종 오류를 범할 확률의 최대값, 즉 1종 오류의 최대 허용 한계를 의미한다.
- 유의수준 5% = 100번 실험을에서 1종 오류를 범하는 최대 허용 한계가 5번. (=1종 오류 발생 확률의 최대값이 0.05)
- 통계적인 가설 검정에서 사용되는 기준값으로 95%의 신뢰도를 기준으로 한다면 0.05가 유의수준 값이 된다.
T-test 란?
• one sample t-test : 1개 표본 데이터의 평균이 특정값과 동일한지 비교
- one-side test : 평균이 특정값과 같다 or 같지 않다 를 검정
- two-side test : 평균이 특정값보다 크다 or 크지 않다 또는 작다 or 작지 않다 를 검정
- side(= tail = direction 단어들과 동일한 의미로 쓰임.)
• two sample t-test : 2개 표본 데이터의 평균이 서로 동일한지 비교
[참고자료]
Anderson Jo님 블로그, Hypothesis Test
(http://incredible.ai/statistics/2019/06/15/Hypothesis-Test/)
PN님 블로그, 기초통계학 t-test 이해하기
(https://m.blog.naver.com/sw4r/222035001670)
EXUPERY님 블로그, 헷갈리는 양측검정, 단측검정
(https://exupery-1.tistory.com/75)
행복한엄쌤님 블로그, 플어쓰는 통계 t 검정이란?
(https://m.blog.naver.com/sendmethere/221333164258)
파이썬 코딩 연습하기💬
✅ np.random.seed( )
보통 np.random.seed()를 고정하여 난수의 생성 패턴을 동일하게 관리할 수 있다.
특정 시드 값은 여러번 실행해도 동일한 난수를 생성한다.
동일한 시드 값으로 인해 환경이 동일하게 유지되는 경우, 다른 컴퓨터에서도 동일한 난수를 생성한다.
=> 즉 예측 가능한 난수를 생성한다.
✅ numpy.random.choice( )
랜덤으로 샘플을 발생시켜주는 함수
random.choice(a, size=None, replace=True, p=None)
<파라미터>
• a
- 샘플을 발생시킬 모집단 지정
- 1-D array-like 또는 np.arange(a) 에 들어갈 정수
• size
- 출력될 샘플의 사이즈.
- int 또는 tuple of ints, optional
- 디폴트는 None이며, 이 경우 a single value가 리턴됨.
• replace
- 복원추출 여부
- boolean, optional
- TRUE: 복원추출 / FALSE: 비복원추출
• p
- 만약 모집단 내 각 원소별로 표본에 뽑힐 확률 p를 알고 있거나, 혹은 지정해주고 싶은 경우 입력.
- 1-D array-like, optional
- 디폴트는 None이며, 이 경우 모두 동일한 균등 확률로 추출함.
[참고자료]
Rfriend 블로그, np.random.choice() 메소드로 임의표본 추출하기 (https://rfriend.tistory.com/548)
✅ 랜덤 샘플 발생하는 방법 2가지 비교 pandas / numpy
[참고자료]
https://blog.softhints.com/pandas-random-sample-of-a-subset-of-a-dataframe-rows-or-columns/
https://www.geeksforgeeks.org/how-to-randomly-select-rows-from-pandas-dataframe/
https://kongdols-room.tistory.com/125
✅ scipy.stats.ttest_1samp(a, popmean)
one sample의 표본평균에 대한 t-test를 계산해주는 함수.
=> 't-statistic' , 'p-value' 를 return한다.
<파라미터>
• a : array_like (sample observation) => 샘플데이터
• popmean: float or array_like (귀무가설에서의 기대값)=> 검정하려는 값
예시
np.random.seed(1111)
coin=np.random.binomial(n=1, p=0.5, size=1000)
print(np.mean(coin))
0.509
from scipy import stats
result=stats.ttest_1samp(coin, 0.5) #t-test 실행
result.statistic #result에서 t-statistic만 출력
result.pvalue #result에서 p-value만 출력
✅ scipy.stats.ttest_ind(a, b, alternative='two-sided')
two independent samples 의 표본평균들에 대한 t-test를 계산해주는 함수.
=> 't-statistic' , 'two-tailed p-value' 를 return한다.
<파라미터>
• a, b : array_like (sample observation) => 두개의 샘플데이터의 shape이 꼭 같아야함.
• alternative : default is 'two-sided'
🔽 헤더? 컬럼명 수정하기
방법 1) 인덱스가 0이 아닌 1부터 시작하니까 reset_index() 해줘야함.
import pandas as pd
data_url = "https://~~~"
df = pd.read_csv(data_url, sep='\t')
df = df.replace({'-':0})
new_header = df.iloc[0]
df = df[1:]
df.columns = new_header
df.reset_index(drop=True, inplace=True) # 인덱스 리셋
df
방법 2) 데이터 처음 읽어올 때 skiprows 파라미터 사용하니까 인덱스 리셋할 필요가 없어짐!
import pandas as pd
data_url = "https://~~~"
df = pd.read_csv(data_url, sep='\t', skiprows=1)
df = df.replace({'-':0})
df
🔽 데이터 프레임 특정 열(컬럼) 조회하기, 선택하기
df['Column_name']
🔽 데이터 프레임 특정 행 데이터 제외하기
방법 1)
# 0, 5, 10 번째 행 데이터 drop
df_rev = df.drop([0,5,10])
df_rev
방법 2)
- df[df['A'].isin(['aa','bb','cc'])]
: A 컬럼의 값이 ['aa','bb','cc']를 포함하는 것만 골라낸다. - df[~df['A'].isin(['aa','bb','cc'])]
: A 컬럼의 값이 ['aa','bb','cc']를 제외하고 나머지를 골라낸다.
df[~df['Column_name'].isin(['aa','bb','cc']
'코드스테이츠 AI 부트캠프 > Section 1' 카테고리의 다른 글
AIB_123_복습정리 : ANOVA, CLT, CI (0) | 2021.09.26 |
---|---|
AIB_122_복습정리 : More Hypothesis Testing (0) | 2021.09.26 |
AIB_121_복습정리 : Introduction to Data Science (1) (0) | 2021.09.26 |
[비공개] AIB_11x : 1주차 Challenge (0) | 2021.09.26 |
[비공개] AIB_114_복습정리 : Derivative(미분) (0) | 2021.09.26 |