이진변수나 변수가 몇 개 안 되는 범주형 변수를 분석하는 것은 그렇게 어렵지 않다. 중요한 범주의 비율이 어느 정도 되는지 알아보면 되기 때문.
막대도표(보통 '바 차트'라고 많이들 부른다)는 가장 흔한 시각화 방법으로, x축에 각 범주들을 놓고 y축에 이에 대응하는 횟수나 비율을 표시한다. 아래는 코드 예시. (데이터 불러오기까지의 과정은 생략)
바 차트는 히스토그램과 매우 유사하긴 하지만, 히스토그램은 x축에 수치적으로 나타낼 수 있는 하나의 변수의 값이 오는 반면 바 차트의 x축은 각 요인변수factored variables의 서로 다른 범주들을 나타낸다. 히스토그램의 막대들이 붙어 있고 중간에 틈이 있으면 그 부분에 해당하는 값들이 존재하지 않는다는 것을 의미하는 것에 반해, 바 차트에서 각 막대들은 서로 떨어져 있다.
바 차트 대신 파이 차트를 사용하기도 하지만, 통계학자나 데이터 시각화 전문가들은 파이 차트가 시각적으로 효과적이지 않다는 이유로 잘 사용하지 않는다고 한다. 이건 아직 내가 감당할 수 있는 이야기는 아니어서 그런갑다 하고 넘기기로.
참고 : 오해를 일으킬 수 있는 그래프
모델링 프로젝트에서 EDA라고 하면 예측값들 간의, 혹은 예측값과 목푯값의 상관관계를 조사하는 것을 빼놓을 수 없다. 일반적으로 상관관계의 측정량으로는 상관계수(a.k.a 피어슨 상관계수)라는 표준화된 방식이 많이 쓰인다. 상관계수는 변수 1과 2의 각각의 평균으로부터 편차들을 서로 곱한 값들의 평균을 각 변수의 표준편차의 곱으로 나눠서 구할 수 있다.
다만 변수들이 선형적인 관계를 갖지 않을 경우에는 상관관계가 더 이상 유용한 측정 지표가 아니다.
상관관계를 나타내는 상관행렬을 이용해 여러 가지 변수들 사이의 관계를 시각화하는 데 사용할 수 있다. 상관행렬은 행렬의 대각원소가 모두 1이라는 것(자기 자신과 상관계수는 1), 그리고 대각원소의 위아래로 대칭이라는 특징을 갖는다. 아래는 통신사 주식 수익 사이의 상관관계를 보여주는 상관행렬의 예시.
상관계수 자체를 시각화해서 볼 수도 있다. 아래는 seaborn의 heatmap을 이용해 시각화한 예시.
평균이나 표준편차와 마찬가지로, 상관계수는 데이터의 특잇값에 민감하다. 클래식한 상관계수(피어슨)를 대체할 수 있는 다른 형태의 상관계수가 있긴 하지만, EDA에는 주로 피어슨 상관계수나 혹은 이것의 로버스트한 다른 버전들이 사용된다. 아예 소프트웨어 패키지에서 로버스트한 방법들을 제공하기도 하는데, 사이킷런의 모듈 sklearn.covariance에 있는 메서드들이 그 예시다. 공분산을 또 보게 되다니
시각화 자체에 조금 더 많은 정보를 담을 수도 있다. 아래는 ETF 수익 간의 상관관계를 나타낸 차트인데, 타원의 색깔과 방향, 그리고 너비로 상관관계의 강도를 표현한다. 선이 얇고 진할수록 더 강한 관계성을 나타낸다. (코드는 너무 길어서 생략) 예를 들어, S$P500(SPY)과 다우존스 지수(DIA)는 상당히 강한 양의 상관관계를 갖는다. (파란색 + 우상향 + 얇음)
반대로, 금(GLD)이나 유가(USO) 등과 관련된 안정적인 ETF들은 주식 중심의 다른 ETF들과 약한, 혹은 음의 상관관계를 보인다. (빨간색 + 좌상향 + 두꺼움)
두 변수 사이의 관계를 시각화하는 가장 기본적인 방법은 산점도를 그려보는 것이다. 아래는 AT&T와 버라이즌의 일간 수익 사이의 상관관계를 산점도로 그린 예시다.
marker = '\u25EF' : 각 데이터 포인트를 원형 기호로 나타내겠다는 표시로, \u25EF는 유니코드 원 기호를 의미한다.
axhline : ax(축)의 h(수평) line(선)을 긋겠다는 의미. 값을 0이 아니라 다른 값으로 바꾸면 수평선이 올라간다. 색상은 회색, lw는 line weight, 선의 굵기를 의미한다.
axvline : 축의 수직선을 긋겠다는 의미. 나머지는 위와 동일하다.
산점도를 보면 두 수익은 0 주변에 모여있긴 하지만 강한 양의 상관성을 보임을 알 수 있다. 두 주식은 거의 매일 함께 오르거나, 함께 떨어지는 모습을 보인다. 한 주식이 올라갈 때 한 주식은 떨어지는 경우(2, 4사분면)는 상대적으로 드물다.