3 유형 내용
1. 가설검정
모평균 검정
- 모집단 1개
- 모집단 2개
- 모집단 3개 이상
- 정규성/등분산성 검정
카이제곱 검정
1. 가설검정
“~할 것이다” 라는 잠정적인 주장(가설)에 대해 통꼐적인 방식으로 검정하는 것으로 통계적 가설검정
1. 귀무가설과 대립가설
- 귀무가설(H0, Null hypothesis): 영가설(기존에 알려진 사실)
- 차이가 없다, 서로 같다, 영향을 주지 않는다 등으로 설정
- 대립가설(H1, Alternative hypothesis): 연구가설, 대안가설
- 차이가 있다, 같지 않다, 영향을 준다 등으로 설정
가설검정은 검정통계량을 구해서 귀무가설(H0)을 채택할 건지 기각할 건지 판단하는 과정
2. 가설 검정의 오류(1종 오류, 2종 오류)
1종 오류
- 귀무가설이 참일 때 이를 기각하는 오류를 범할 확률
- 귀무가설이 참일 대 귀무가설을 기가할 최대 허용 한계
- 보통 𝛼(알파)로 표기하고 유의수준이라 부른다)
- 귀무가설이 거짓일 때 이를 채택하는 오류를 범할 확률
3. 가설 검정 순서
- 가설 설정(귀무/대립가설)
- 유의수준(𝛼) 설정(일반적으로 5%)
- 귀무가설하에 검정통계량 계산
- 검정통계량으로 P-value 계산
- 귀무가설(H0) 기각여부 결정(채택/기각)
- P-value(유의확률) > 0.05(유의수준): H0(귀무가설) 채택
- P-value(유의확률) ≤ 0.05(유의수준): H0(귀무가설) 기각
3. 회귀분석
2. 로지스틱 회귀분석
Odds(승산)
\[odds = \frac{P}{1-P}=\frac{성공할 확률(Y=1)}{실패할 확률(Y=0)}\]실습
라이브러리
import scipy.stats as stats
from scipy.stats import shapiro
: 정규성 검정 테스트
정규성 검정
`statistic, pvalue = stats.shapiro(df[‘mpg’])
모집단 1개
- 가설설정
- 유의수준 확인
- 정규성 검정
- 검정실시(통계량, p-value 확인)
- 귀무가설 기각여부 결정(채택/기각)
t-test 검정(정규성): ttest_1samp
statistic, pvalue = stats.ttest_1samp(df['mpg'], popmean=20)
statistic, pvalue = stats.ttest_1samp(df['mpg'], popmean=17, alternative='greater')
statistic, pvalue = stats.ttest_1samp(df['mpg'], popmean=17, alternative='less')
윌코슨 부호순위 검정(비정규성): wilcoxon
statistic, pvalue = stats.wilcoxon(df['mpg']-20)
statistic, pvalue = stats.wilcoxon(df['mpg']-17, alternative='greater')
statistic, pvalue = stats.wilcoxon(df['mpg']-17, alternative='less')
모집단 2개
대응표본(쌍체): 동일한 객체의 전 vs 후 평균 비교
- 가설설정
- 유의수준 확인
- 정규성 검정 (주의) 차이값에 대한 정규성 4. 검정실시(통계량, p-value 확인)
- 귀무가설 기각여부 결정(채택/기각)
paired t-test(정규성): ttest_rel
statistic, pvalue = stats.ttest_rel(df['after'], df['before'])
wilcoxon test(비정규성): wilcoxon
statistic, pvalue = stats.wilcoxon(df['after']-df['before'])
독립표본: A집단의 평균 vs B집단의 평균
- 가설설정
- 유의수준 확인
- 정규성검정(주의)두집단모두정규성을따를경우!
- 등분산 검정
- 검정실시(통계량, p-value 확인) (주의) 등분산여부 확인
- 귀무가설 기각여부 결정(채택/기각
2sample t-test(정규성): ttest_ind
statistic, pavlue = stats.ttest_ind(df['A'], df['B'], equal_var=True, alternative='two-sided')
ranksums(비정규성): ranksums
statistic, pvalue = stats.ranksums(df['A'], df['B'])
모집단 3개 이상
분산분석(ANOVA):
- 가설설정
- 유의수준 확인
- 정규성검정(주의)집단모두정규성을따를경우!
- 등분산 검정
- 검정실시(통계량, p-value 확인) (주의) 등분산여부 확인
- 귀무가설 기각여부 결정(채택/기각)
등분산성 검정 bartlett
statistic, pvalue = stats.bartlett(df['A'], df['B'], df['C'])
정규성, 등분산성: 분산분석(F_oneway)
statistic, pvalue = stats.f_oneway(df['A'], df['B'], df['C'])
비정규성, 비등분산성: 크루스칼-왈리스 검정 (kruskal)
statistic, pvalue = stats.kruskal(df['A'], df['B'], df['C']
카이제곱 검정
- 적합도 검정 - 각 범주에 속할 확률이 같은지?
- 독립성 검정 - 두 개의 범주형 변수가 서로 독립인지
가설검정 순서
- 가설 설정
- 유의수준 확인
- 검정실시(통계량, pvalue확인, 기대값 확인)
- 귀무가설 기각여부 결정(채택/기각)
적합도 결정
1
2
3
4
from scipy.stats import chisquare
f_obs = [30, 20, 15, 35]
f_exp = [25, 25, 25, 25]
statistic, pvalue = chisquare(f_obs=f_obs, f_exp=f_exp
독립성 검정
1
2
from scipy.stats import chi2_contingency
statistic, pvalue, dof, expected = chi2_contingency(df)
다중회귀분석 및 상관분석
1
2
3
from sklearn.linear_model import LinearRegression
model.fit(x, y)
model.score(x, y)
- Rsq:
model.score
- 회귀계수:
model.coef_
- 절편:
model.intercept
statsmodel 사용
1
2
3
4
5
6
import statsmodels.api as sm
x = sm.add_constant(x)
model = sm.OLS(y, x).fit()
summary = model.summary()
상관계수
1
2
3
from scipy.stats import pearsonr
r, pvalue = pearsonr(x, y)
오즈 구하는법
1
result = np.exp(model.coef_[0][몇번째])