import pandas as pd
mpg = pd.read_csv('mpg.csv')

14-1 가설 검정이란?(link)
14-2 t 검정 - 두 집단의 평균 비교하기(link)
14-3 상관분석 - 두 변수의 관계 분석하기(link)
ex) 성별에 따른 월급 차이가 우연히 발생할 확률을 계산
유의확률이 크면
유의확률이 작으면
equal_var = True: 집단 간 분산이 같다고 가정일반적으로 유의확률 5%를 판단 기준으로 삼음
'pvalue=2.3909550904711282e-21': 2.3909550904711282 × 10의 -21승regular = mpg.query('fl == "r"')['cty']
premium = mpg.query('fl == "p"')['cty']
# t-test
stats.ttest_ind(regular, premium, equal_var = True)TtestResult(statistic=-1.066182514588919, pvalue=0.28752051088667036, df=218.0)
unemploy pce
unemploy 1.000000 0.614518
pce 0.614518 1.000000
unemploy와 pce의 상관계수를 나타낸 행렬PearsonRResult(statistic=0.6145176141932079, pvalue=6.773527303289964e-61)
상관행렬(correlation matrix)
mpg cyl disp hp drat wt qsec vs am gear carb
0 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4
1 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4
2 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1
3 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1
4 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2
mpg cyl disp hp drat wt qsec vs am gear carb
mpg 1.00 -0.85 -0.85 -0.78 0.68 -0.87 0.42 0.66 0.60 0.48 -0.55
cyl -0.85 1.00 0.90 0.83 -0.70 0.78 -0.59 -0.81 -0.52 -0.49 0.53
disp -0.85 0.90 1.00 0.79 -0.71 0.89 -0.43 -0.71 -0.59 -0.56 0.39
hp -0.78 0.83 0.79 1.00 -0.45 0.66 -0.71 -0.72 -0.24 -0.13 0.75
drat 0.68 -0.70 -0.71 -0.45 1.00 -0.71 0.09 0.44 0.71 0.70 -0.09
wt -0.87 0.78 0.89 0.66 -0.71 1.00 -0.17 -0.55 -0.69 -0.58 0.43
qsec 0.42 -0.59 -0.43 -0.71 0.09 -0.17 1.00 0.74 -0.23 -0.21 -0.66
vs 0.66 -0.81 -0.71 -0.72 0.44 -0.55 0.74 1.00 0.17 0.21 -0.57
am 0.60 -0.52 -0.59 -0.24 0.71 -0.69 -0.23 0.17 1.00 0.79 0.06
gear 0.48 -0.49 -0.56 -0.13 0.70 -0.58 -0.21 0.21 0.79 1.00 0.27
carb -0.55 0.53 0.39 0.75 -0.09 0.43 -0.66 -0.57 0.06 0.27 1.00

sns.heatmap()의 mask를 이용해 중복된 부분 제거(1) mask 만들기
array([[0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]])
(1) mask 만들기
mask의 오른쪽 위 대각 행렬을 1로 바꿈array([[1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[0., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[0., 0., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[0., 0., 0., 1., 1., 1., 1., 1., 1., 1., 1.],
[0., 0., 0., 0., 1., 1., 1., 1., 1., 1., 1.],
[0., 0., 0., 0., 0., 1., 1., 1., 1., 1., 1.],
[0., 0., 0., 0., 0., 0., 1., 1., 1., 1., 1.],
[0., 0., 0., 0., 0., 0., 0., 1., 1., 1., 1.],
[0., 0., 0., 0., 0., 0., 0., 0., 1., 1., 1.],
[0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 1.],
[0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.]])
(2) 히트맵에 mask 적용하기
sns.heatmap()에 mask 적용mask의 1에 해당하는 위치의 값이 제거되어 왼쪽 아래의 상관계수만 표현됨
(3) 빈 행과 열 제거하기
mpg행, 오른쪽 아래 carb열에 아무 값도 표현되어 있지 않음mask와 상관행렬의 첫 번째 행과 마지막 열을 제거해서 빈 행과 열 제거


히트맵 모양 바꾸기
sns.heatmap()의 파라미터를 이용하면 히트맵의 모양을 다양하게 바꿀 수 있음