H0(귀무가설): 두 변수 사이에 확률적으로 차이가 없다.
H1(대립가설): 두 변수 사이에 확률적으로 차이가 있다.
예1) 데이터가 0에서 3까지의 숫자에 대한 95개의 관측치를 포함하고 각각의 개수는 거의 같지만 완전히 동일하지는 않다. scipy.stats.chisquare()로 이를 검정한다.
데이터 생성
Numpy의 unique() 메서드를 사용해 각 값의 개수를 얻는다.
Scipy에서 stats를 임포트하고 stats.chisquare() 메서드를 사용한다.
N = 95의 관측치 개수가 주어졌을 때 0, 1, 2, 3 값이 균등하게 분포된 대규모 모집단에서 데이터가 무작위로 샘플링됐다는 귀무가설하에 이러한 결과가 나타날 가능성을 평가할 수 있다.
0.852의 p값은 귀무가설이 참인 경우 테이블에 있는 것과 유사하거나 더 큰 차이가 있는 데이터셋을 볼 확률이 85%로 추정됨을 나타낸다. 즉, 네 숫자의 실제 빈도 차이가 있지 않다.
이 데이터는 무작위 표본 추출을 가정할 때 모집단의 그룹 크기가 동일하지 않다는 증거를 보여주지 못한다.
* p값(p-value)
어떤 사건이 우연히 발생할 확률, 유의확률
- A의 경우 우연히 관측될 확률이 높다.
- B의 경우 우연히 관측될 확률이 낮다.
- 즉, 우연히 일어날 확률, 유의확률이 작을수록 해당 사건은 무언가의 이유(인과관계, 상관관계 등)이 있을 것이라고 추측할 수 있다.
- 보통 p값이 0.01이나 0.05보다 작을 경우 귀무가설을 기각한다.
예2) 위의 코드에서 관측치 개수 '3'을 20부터 10까지 변경할 경우
예3) 위의 코드에서 표본이 더 작을 경우
예4) 위의 코드에서 표본이 더 클 경우
예5) N = 300 관측치가 있는 시뮬레이션 세크먼트 데이터에서 세그먼트 크기가 서로 다른지 알아보자
이 데이터의 경우 데이터프레임 형태이기 때문에 np.unique() 대신 pandas의 value_counts() 메서드도 사용할 수 있다.
p값이 0.00060으로 세그먼트 크기에 차이가 있다.
데이터를 추출할 때 가정한 것처럼 구독 상태는 주택 소유와 무관하기 때문에 응답자는 주택 소유 상태와 관계없이 구독할 가능성이 동일하다. pandas의 crosstab() 메서드를 사용해 양방향 테이블을 생성하고 chisquare_contingency()를 사용해 검정할 수 있다.
이 경우 귀무가설을 숫자의 개수가 한계 비율에서 예상할 수 있는 것과 같다는 것이다.
p값에 따라 귀무가설은 기각되며, 주택 소유가 구독 상태와 무관하다는 증거가 없다는 결론을 도출할 수 있다.
예1) 2014년 슈퍼볼 경기일에 맨해튼에서 12개의 시애틀 팬 그룹과 8개의 덴버 팬 그룹을 관찰했다. 관찰값은 이항값의 무작위 표본이라고 가정할 때, 관찰된 시애틀 팬이 60%이었다면, 이는 팬들이 서로 동일(각각 50%)하다는 가정으로부터 유의하게 다른 것인가?
6.3.1 신뢰 구간 정보
95% 신뢰구간: 표본 변화에 따라 변하는 신뢰구간 중에서 약 95%는 모평균을 포함한다는 의미
- 참 값이 신뢰구간 범위에 있다는 의미가 아닌, 실제 값이 우리가 얻은 값이라면, 무작위 샘플링의 추가 라운드에서 추가 추정치가 이 신뢰구간 95% 이내에 속할 것으로 예상하는 것!
=> 신뢰구간은 참 값이 아니라 추정치에 관한 것.
6.3.2 binom_test()와 이항 분포에 대한 추가 정보
예2) 위의 예시와 같은 비율이지만 더 큰 샘플로 200명 중 120명이 시애틀 팬이라고 관찰됐다면?
예3) 실제 비율이 50%인 경우 20명 중 8~12명의 시애틀 팬을 관찰할 확률은 얼마일까?
t-검정: 한 표본의 평균을 다른 표본의 평균과 비교한다. 정확히 두 집합의 데이터 평균을 비교하여 통계적으로 유의한 차이가 있나 검증.
- p-값이 0.05보다 작으면 통계적으로 유의미한 차이가 있는 것으로 본다.
예1) 응답 변수인 income을 설명 변수인 own_home으로 설명할 수 있는지 측정
먼저 데이터에 대한 표본 평균과 표준 편차 확인
t-test 통해 주택 소유가 전체 부문에서 소득 차이와 관련이 있는지 여부 검정
=> t통계가 -3.96이고 p값이 0.00009임을 알 수 있다. 즉, 주택 소유에 따른 소득 차이가 없다는 귀무가설이 기각된다.
주택 소유자와 비소유자 간 평균 소득 차이의 95% 신뢰 구간 확인
stats.t.interval(alpha간격너비 , df자유도, loc그룹a와 b의 평균 차이, scale각 그룹에 대한 표준 오차의 기하 평균) 사용.
95% 신뢰구간이 -11525~-5514로, 이 표본이 더 큰 모집단의 대표적인 데이터였다면 반복 샘플링에서 그룹 차이가 해당 값 사이에 있을 것임을 95% 신뢰할 수 있다.
예2) 마찬가지로 Travelers 세그먼트의 차이점을 측정
-6107~7054의 신뢰구간은 0을 포함하므로 p값 0.93에서 제시된 바와 같이 집을 소유한 여행자와 그렇지 않은 여행자 간의 평균 소득에 유의한 차이가 없다는 결론이 나온다.
=> 예1의 t-검정과 달리 Travelers 내에서는 주택 소유에 대한 소득에 유의미한 차이가 없음을 확인했다. 즉, 차이점은 대부분 Travelers 그룹 외부에 있어야 한다.
t-검정은 두 그룹만 비교하기 때문에 4개의 세그먼트에 대한 t-검정은 작동하지 않는다. 따라서 이 경우 분산 분석을 진행해야 할 필요가 있다.
6.5.1 수식 구문에 대한 간략한 소개
6.5.2 분산 분석
예1) 세그먼트 데이터의 평균 소득 차이, 특히 주택 소유나 세그먼트 멤버십 또는 둘 다와 관련된 소득에 관해 알아본다
6.5.3 ANOVA에서 모델 비교
anova_lm(model1, model2, ...) 구문을 사용해 2개 이상의 모델을 비교할 수 있으며, 세그먼트만 있는 ols() 모델과 세그먼트와 수입이 모두 있는 모델을 비교할 수 있다.
=> 이는 세그먼트와 주택 소유권을 모두 포함하는 모델 1이 모델 0과 전체적으로 크게 다르지 않다는 것을 의미한다.
anova_lm() 명령으로 수행되는 모델 비교는 중첩된 모델의 경우에만 의미가 있다는 점에 유의해야 한다.
6.5.4 그룹 신뢰 구간 시각화
기본 ols() 모델에는 절편항이 있고, 다른 모든 세그먼트는 이에 상대적이다.
모델 공식에 '-1'을 추가해 절편을 제거하는 것이 좋다. 절편이 제거되는 각 계수는 각 세그먼트의 평균 수입에 해당한다.
다음과 같이 모델의 평균과 신뢰구간을 그릴 수 있다.
다음과 같이 각 세그먼트의 평균 수입에 대한 신뢰구간을 볼 수 있다.