let us not love with words or tongue but actions and truth.

IT/파이썬

T-Test, levene test, 맨-휘트니 U 검정(Mann-Whitney U test)

sarah0518 2020. 12. 4. 14:21
728x90

검정해야할 컬럼들이 많을 때, 아래와 같이 for문으로 작성하면 훨씬 편하다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from scipy import stats
 
col_list=['col1''col2''col3']
 
t_list=[]
p_list=[]
lp_list=[]
up_list=[]
 
for i in col_list:
    t, p = stats.ttest_ind(df[(df['target']==1)][i],df[(df['target']==0)][i])
    lt, lp = stats.levene(df[(df['target']==1)][i],df[(df['target']==0)][i])
    # 비모수검정 mann whitney u 검정
    u, up = stats.mannwhitneyu(df[(df['target']==1)][i],df[(df['target']==0)][i])
   
    t_list.append(t)
    p_list.append(p)
    lp_list.append(lp)
    u_list.append(up)
cs

 

 

위에 리스트로 만들어줬던 검정결과를 DataFrame으로 변형해서 결과 보여주기

 

1
2
3
4
frames={'t':t_list, 'p':p_list, 'lp':l_list, 'up':u_list}
df_ttest=pd.DataFrame(frames, index=col_list)
 
df_ttest
cs

 

그러면 아래와 같이 col3이 통계적으로 유의차가 있는것으로 간단히 확인 할 수 있음.

 

만약 등분산성을 띄지 않아서 welch's test를 수행해야된다면

아래와 같이 equal_var에 False만 넣어주면 됩니다.

 

1
stats.ttest_ind(df['petal_length'], df['petal_length'], equal_var = False)
cs

 

참고)

Wilcoxon Matched Pairs Signed Rank Test은 실험군이나 대조군 중 하나의 집단에서 사전-사후를 비교할때 쓰는 t-검증의 다른버전

Wilcoxon과 MH U검정이 아래에 설명이 잘 나와있으니 꼭 한번씩은 읽어보세요.

blog.daum.net/dataminer9/282

 

Mann-whitney와 Wilcoxon Matched Paireds Signed Rank

오늘은 Mann-Whitney U test와 Wilcoxon Matched Pairs Signed Rank Test에 대해서 간단히 설명하고, Kruskal-Wallis ANOVA는 생략하겠습니다. 이건 잘 안나오는 분석이라서요. 1. Mann-Whitney U test MH U 검증..

blog.daum.net

 

728x90