가설 검정
# from scipy import stats
1. 단일표본검정 - 관심 모집단 1개
# Shapiro-Wilk 검정 -> 정규성 검정
stats.shapiro(data)
# 단일표본검정
stats.ttest_1samp(data, 기대값)
# alternative 매개변수
alternative='two-sided' 기본값
alternative='less'
alternative='greater'
# Wilcoxon의 부호 순위 검정(비모수 검정)
stats.wilcoxon(data - 기대값)
2. 대응표본검정 - 관심 모집단 2개 (대응 표본)
# 정규성 검정
stats.shapiro(diff)
* diff = data1 - data2
# 대응(쌍체)표본검정
ttest_rel(data1, data2)
# Wilcoxon의 부호 순위 검정
wilcoxon(data1, data2)
2. 독립표본검정 - 관심 모집단 2개 (독립 표본)
# 정규성 검정
shapiro(data1)
shapiro(data2)
# 정규분포를 따르지 않을 때: Mann-whitney U 검정
mannwhitneyu(data1, data2)
# 정규분포를 따를 때 등분산 검정(레빈) 실시
levene(data1, data2)
# 정규분포, 등분산 만족할 때 독립 표본검정
ttest_ind(data1, data2)
# 정규분포는 만족하였지만 등분산은 아닐 때
ttest_ind(data1, data2, equal_var=False
범주형 데이터 분석(카이제곱 검정)
# 적합도 검정
import scipy from stats
- stats.chisquare(observed, expected)
observed: 관찰된 빈도 리스트
expected: 기대 빈도 리스트
# 독립성 검정, 동질성 검정
import scipy from stats
- stats.chi2_contingency(table, correction = True)
- table: 교차표
- correction: 연속성 보정 (기본값 True)
회귀 분석
상관계수
# 피어슨 상관관계, t검정
df.corr() - (기본값= 피어슨)
stats.pearsonr(x,y)
# 스피어맨 상관관계 , t검정
df.corr(method = 'spearman')
stats.spearmanr(x,y)
# 켄달타우 상관관계 , t검정
df.corr(method = 'kendall')
stats.kendalltau(x,y)
단순 선형 회귀 분석
# 최소제곱법: OLS
import statsmodels.formula.api import ols
ols('종속변수 ~ 독립변수', data=df).fit()
# 회귀 모델 통계분석
요약- model.summary()
결정계수 - model.rsquared
회귀계수(변수, 절편) - model.params[]
유의성- model.pvalues[]
# 예측값
model.predict()
# 예측값과 예측값에 대한 신뢰구간, 예측구간
pred = model.get_prediction()
pred.summary_frame(alpha=0.05)
>> 신뢰구간보다 예측구간이 더 길다!
# 잔차 구하기
1. model.resid
2. df['잔차'] = df['종속변수'] - model.predict(df)
# 잔차제곱합
1. (model.resid**2).sum()
2. (df['잔차'] ** 2).sum()
# MSE 잔차제곱평균
1. (df['잔차'] ** 2).mean()
2. from sklearn.metrics import mean_squared_error
pred = model.predict(df)
mean_squared_error(df['종속변수'], pred)
다중 선형 회귀 분석 (위와 비슷)
ols('종속변수 ~ 독립변수1 + 독립변수2', data=df).fit()
범주형 변수
# 원핫 인코딩 처리 >> 001, 010, 100, 001 중 1번째, 4번째 삭제해도 판단 가능
pd.get_dummies(drop_first=True)
분산분석
일원 분산 분석
# scipy를 이용한 일원 분산 분석
import scipy import stats
stats.f_oneway()
# 데이터 재구조화 시키기(긴 형태)
df.melt()
# 분산분석 테이블 이용
from statsmodels.formula.api import ols
from statsmodels.stats.anova import anova_lm
model = ols().fit()
anova_lm(model)
# 사후 검정
from scipy import stats
from statsmodels.stats.multicomp import pairwise_tukeyhsd, MuliComparison
투키: pairwise_tukeyhsd()
본페로니: mc = MultiComparison()
mc.allpairtest(stats.ttest_ind, method='bonf')
# 크루스칼-왈리스 검정
stats.kruskal()
이원 분산 분석
# 분산분석 테이블 이용
from statsmodels.formula.api import ols
from statsmodels.stats.anova import anova_lm
model = ols().fit() -> 상호작용효과: * 사용, 범주형 데이터는 C()
anova_lm(model)
오답노트
# 회귀모형에서 변수가 한 단위 증가할 때 오즈비 값(Odds ratio)
import numpy as np
np.exp(model.params['변수'])
'[Python]' 카테고리의 다른 글
[Python] 빅데이터분석기사 기초 통계 (1) | 2023.10.26 |
---|---|
[Python] 빅데이터분석기사 실기 연습(작업형2) (0) | 2023.10.18 |
[Python] 빅데이터분석기사 실기 연습(작업형1) (0) | 2023.10.18 |
[Python] 통계 기본 정리 (0) | 2023.04.03 |
[Python] pandas 기본 (0) | 2023.03.09 |