본문으로 바로가기

p-value

귀무가설(H_0): 차이/효과/관계가 없다 (independent)
대립가설(H_A): 차이/효과/관계가 있다 (dependent) == 유의미하다(significant)

 

: p-value란 귀무가설이 참이라는 전제 하에(조건), "관찰이 완료된 값 혹은 그보다 더 극단적인 값"이 표본(샘플데이터)을 통해 나타날 (조건부)확률
(- 그보다 더 극단적인 값: 극단적으로 차이/효과/관계가 깊어보이는 값 (대립가설을 지지하는 값))

 

- 쉽게 말하자면, H0이 참일 때, 우리의 데이터를 만날 확률

 

- p-value가 0.05(5%) 미만일 경우: 귀무가설이 참일 때 해당 관측치가 나타날 확률이 매우 낮다고 판단하며, 귀무가설을 기각한다.
- p-value가 0.05(5%) 이상일 경우: 귀무가설이 참일 때 해당 관측치가 나타날 확률이 충분하다고 판단하며, 귀무가설을 기각하지 않는다.

 

 


1. Chi-square 검정

: 두 개의 Categorical Variable 사이의 관계가 있는지 없는지 검정 (독립성 검정)

stats.chisquare(df.propensity, df.skin) 
# >Power_divergenceResult(statistic=291.8166666666667, pvalue=0.023890557260065975)
# 2.389% -> 95%가 넘는 확률로 우리 데이터를 만나지 않는다는 말 -> H0 기각, H1 채택

 

2. 상관관계 분석

- 피어슨 상관계수로, -1에 가까울수록 음의 상관관계, 1에 가까울수록 양의 상관관계, 0에 가까울수록 상관관계가 적다.

df_corr = df[['decision', 'satisf_b', 'satisf_i', 'satisf_al', 'repurchase']]
df_corr.corr()

 

3. 피어슨 상관계수, p-value

- 피어슨 상관계수와 p-value를 동시에 출력해준다.

result = stats.pearsonr(ad_df['Marketing_Costs'], ad_df['User_Acquired']) 
print("피어슨 상관계수 :", result[0])
print('p-value :', result[1])

# >피어슨 상관계수 : 0.8035775069546851
# >p-value : 0.0016386012345537425

- 위의 결과는 p-value가 0.0016이므로, 두 변수 간 통계적으로 유의미한 상관관계가 없다는 전제 하에 이러한 측정 결과가 나올 확률이 0.16%이다.

- 다시 말해, 두 변수 사이에는 통계적으로 유의미한 상관관계(+0.8)가 있다.

 

 

4. A/B Test

1) 독립표본 t-test

stats.ttest_ind(web_a["Duration_A"], #.values, # 해당 열의 '값들'
                web_b["Duration_B"], #.values, # 해당 열의 '값들'
                equal_var=False)     
                
                
# 독립검정은 반드시 equal_var=False; 두 집단의 수가 다를 경우에도 equal_var=False

 

2) 카이제곱 검정

 

- chi2_contingency 함수를 활용해 Contingency table을 기반으로 카이제곱 검정이 가능하다.

- Contingency table (분할표): 데이터가 정리된 표

# "Chi-square" test of independence of variables in a "contingency" table.
# contingency table 형태라면 chisquare()로 쓰면 안됨
# stats.chi2_contingency([click_df['Clicked'], click_df['Unclicked']])
stats.chi2_contingency([click_df['Clicked'], click_df['Unclicked']])[1]

# >0.004968535119697213