두둥... 아빠가 되었다.

배란일에 맞춰 계획하에 처음 시도를 해봤기에 전혀 예상을 못하진 않았지만, 그래도 놀랍고 당황스러운 건 당연한거다.

 

하필 오늘 부산에서 친구가 올라와 술을 한잔 하기로 하였고,

코로나로 인해 집 앞 공원 벤치에 앉아 꽤나 긴 시간동안 수다를 떨었다.

 

오늘따라 와이프가 이상하리만큼 톡으로 "몇시쯤 들어와?", "이제 헤어져?", "바로 집와?" 질문이 많았다.

역시나 나는 전혀 눈치를 채지 못 하였고, 친구를 배웅까지 해주고 천천히 귀가 중이었다ㅋ

 

엘리베이터가 우리집 층에 위치해 있는 것이 약간은 이상하긴 했다.

호수가 두 호수 밖에 없을 뿐더러 집으로 들어가는 사람을 보지 못 했는데..

그러려니 하고 엘리베이터를 타고 집으로 들어왔다. 

 

 

안방에 처음 보던 OPEN 이라는 문구가 달려 있다.

와이프가 평소 집 꾸미는 것을 워낙 좋아하는지라 또 대수롭지 않게 말 그대로 문을 OPEN 하였다.

그랬더니 와이프가 서 있었고, 갑자기 다시 문을 닫는 것이다.

 

크게 웃으며 "아니~ 나가서 다시 열어봐라고~" 하길래, 말 그대로 다시 문을 열었다.

그 때까지만 하더라도, 아니 그러면 간판을 뒤로 해서 CLOSE를 해 놓던가.. 속으로 생각하고 있었다.

 

와이프가 또 다시 문을 밀어 닫는 것이다..

 

??

 

영문을 모른채 이번에는 힘을 약간 주어 다시 문을 열었고, 와이프는 웃겨서 눈물까지 흘리는 중이었다ㅋ

다시 기회를 줄테니 나가서 다시 열어봐라는 것이다...

 

그제서야 어라? 종이를 열어봐라는 뜻인가? 하며 열었더니... 

 

그렇게 아빠가 되었다.

주체할 수없는 행복으로 인해 와이프를 몇 번을 껴안으며 "진짜야?"만 되풀이 했던 것 같다.

 

참고로, 복곰이는 태명이다.

신기하리만큼, 4주 전쯤, 와이프, 장모님, 장인어른이 각각 태몽을 꾸었는데,

와이프 꿈에서는 하얀 곰이 저 언덕 밑에서 손을 흔들며 우리에게 다가오더니, 식탁 위로 올라가 춤을 추었고 우리 둘은 귀여워하며 박수를 쳤다고 한다. 그렇게 하여 백곰보다는 복곰이 더 귀여워 복곰으로 지었다.

 

다음날, 본래 다니던 병원으로 손을 꼭 잡고 방문하였다.

4주차라고 한다.

 

저 동그라미가 아기집이라고 하는데, 0.4cm 정도라고 하니 사실상 점이나 다름 없다.

아기집 자리도 아주 잘 잡았고 잘 크고 있을거라 하여 마음 놓고 집으로 왔다.

 

2주 뒤에 다시 방문하라는데, 그 때는 심장소리를 들을 수 있다고 하니...

하루하루가 매우 천천히 갈 듯한 느낌이다...

 

안녕하세요. 우주신 입니다.

 

 

약 3년만에 포스팅을 하네요... 일을 하다보니 포스팅을 꾸준히 못 하고 있습니다..ㅠ

오늘은 블로그에서 가장 조회수가 높은 '[R] 상관분석...' 글을 Python으로 빠르게 변환 해봤습니다.

이번 포스팅과 다음 포스팅에서는 상관분석과 회귀분석에 대해 정리해보겠습니다.

 

우리는 종종 어떤 두 사건 간의 연관성을 분석해야 할 경우가 많습니다.

둘 또는 그 이상의 변수들이 서로 관련성을 가지고 변화할 때 그 관계를 분석해야 하는데,

가장 잘 알려진 방법 중 하나가 상관분석회귀분석 입니다.

 

예를 들어, GDP와 기대수명 간의 관계, 키와 몸무게 간의 관계를 보자면,

각각 두 변수 간의 선형적 관계를 상관(Correlation)이라고 하며, 이러한 관계에 대한 분석을 상관분석(correlation analysis)라고 합니다.

 

이번 예시에서는 당뇨와 그에 영향을 미치는 변수들 간의 관계를 분석해 보죠.

먼저 데이터는 sklearn에서 제공하는 datasets을 불러왔습니다.

import pandas as pd
import numpy as np

from sklearn import datasets
data = datsets.load_diabetes()

데이터가 dictionary 형태이므로 어떤 key를 가지는지 확인해보면 아래와 같이 나오고,

여기서 data, target, feature_names 세 가지 key만 쓰겠습니다. 당연히 데이터 형태의 길이가 같은지 부터 확인해야죠.

 

여기서 target이 당뇨병의 수치이고 나머지 feature names에 속하는 age, sex, bmi 등등은 변수라고 보면 됩니다.

즉, 442명의 사람들을 상대로 10가지의 특성들을 나열한거죠.

 

우리는 bmi(체질량지수) 변수와 당뇨병의 수치(target)가 어떤 관계를 가지는지 한번 살펴봅시다.

 

1. 산점도 (Scatter plot)

먼저, 상관계수를 파악하기 전에 산점도를 그려 두 변수 간에 관련성을 시각적으로 파악할 수 있습니다.

X = df.bmi.values
Y = df.index.values

import matplotlib.pyplot as plt
plt.scatter(X, Y, alpha=0.5)
plt.title('TARGET ~ BMI')
plt.xlabel('BMI')
plt.ylabel('TARGET')
plt.show()

matplotlib에서 제공하는 scatter()를 통해 그린 결과 입니다.

대략 봤을 때 두 변수는 서로 양의 관계를 이루고 있는 것 같죠?

 

 

2. 공분산(Covariance) 및 상관계수(Correlation Coefficient)

산점도를 이용하면 두 변수간의 직선적인 관계를 대략적으로 파악은 가능하지만, 두 변수 사이의 관계를 어떠한 수치로 표현하지는 않아요. 그렇기에 우리는 두 변수 간의 관계를 수치로 표현하기 위해 공분산 및 상관계수를 이용합니다.

 

공분산은 2개의 확률변수의 상관정도를 나타내는 값인데, 만약 2 개의 변수 중 하나의 값이 상승하는 경향을 보일 때 다른 값도 상승하면 공분산의 값은 양수, 반대로 다른 값이 하강하는 경향을 보이면 공분산의 값은 음수가 나옵니다.

 

여러가지 방식으로 구할 수 있는데,

직접 식을 계산하면,

더 편하게는 numpycov()를 이용하면 되죠.

두 방법 모두 비슷한 값이 나왔고 양의 값이 나온 것을 볼 수 있죠.

 

그러나 공분산은 상관관계의 상승 혹은 하강하는 경향을 이해할 수는 있으나 2개 변수의 측정 단위의 크기에 따라 값이 달라지므로 절대적 정도를 파악하기에는 한계가 있습니다. 즉, 2.15가 어느 정도의 양의 상관관계인지를 가늠하기가 쉽지 않죠.

 

그래서 공분산을 표준화 시킨 상관계수를 보다 많이 이용합니다.

상관계수는 각 변수의 표준편차를 분모로 나눠주면 되죠.

당연히, numpy는 없는게 없죠. corrcoef() 함수를 이용하면,

상관계수는 -1에서 1 사이의 값을 가지기에 0일 경우에는 두 변수 간의 선형관계가 전혀 없다는 것을 뜻 합니다.

보통 0.3과 0.7 사이이면, 뚜렷한 양적 선형관계로 0.7과 1.0 사이는 강한 양적 선형관계로 간주한다고 합니다.

(그러나 데이터의 특성과 샘플의 대표성 등 상황에 따라 상관계수 값 자체를 해석하는데 있어 정확한 기준은 없습니다)

 

위에 나온 0.58은 BMI(체질량지수)와 당뇨병수치(Target)는 뚜렷한 양적 선형관계를 이루고 있다고 볼 수 있습니다.

 

주의할 점은 상관계수 분석 자체가 특이 값에 민감하게 반응하기 때문에 데이터 pre-processing에 항상 주의를 기울여야 합니다.

또한 상관관계는 두 변수 간의 관련성을 의미할 뿐, 원인과 결과의 방향을 알려주지는 않습니다.

 

 

3. 상관계수의 검정

상관계수 값 자체가 유의미한가를 검정할 수도 있습니다. 그 중 하나로 p-value를 많이 이용하는데,

scipy 패키지의 stats.pearsonr()을 이용하면 상관계수와 p-value를 동시에 얻을 수 있습니다.

import scipy.stats as stats
stats.pearsonr(X,Y)

뒤 결과 값이 p-value인데, 귀무가설 "상관관계가 없다"에 대한 검정 결과 p-value가 3.46e-42라는 0에 아주 매우 가까운 값이 나왔으므로 귀무가설을 기각할 수 있음을 알 수 있습니다.

 

 

4. 그 외

그냥 궁금해서 나머지 변수들도 상관계수를 확인해 봤습니다.

당뇨병수치와 가장 상관관계가 높은 것은 bmi이고 age나 sex는 큰 관련이 없는 것으로 보이네요.

 

다음 시간에는 회귀분석에 대해 다뤄보겠습니다~

안녕하세요. Bitcoin and Cryptocurrency Technology 번역본 3장 포스팅 합니다.

번역 글을 읽기 전에 번역 질과 관련하여 여기 한번 확인해주세요!


티스토리 특성상 사진은 복붙이 안 되기에 jpg 파일로 변환하여 올리는 점 양해 부탁드림다 :)



  1. d 2019.02.25 20:01

    MDA(모에다)코인은 시총 약 170억(146위)가량 되는 코인으로 P2P결제/송금 네트워크를 제공하는 코인입니다. 총 공급량이 유동공급량이라 유동성이 좋아 투자하기 좋은 코인입니다. 특히 바이낸스에서 상장되어 있고 유망코인으로 거래가 활발합니다.

+ Recent posts