글쟁이, 코딩한다

1223 / K_digital 13일차 / 파이썬(기초 통계분석) 본문

나는 코딩도 한다/TIL

1223 / K_digital 13일차 / 파이썬(기초 통계분석)

Algori 2020. 12. 23. 21:48

0.

  오전은 기초 통계 분석 관련 강의. 오후에는 세미 프로젝트를 시작했다.

 

  강의가 이어질수록 새로 등장하는 단어들은 대부분 난생 처음 듣는 말일 때가 많다. 프로그래밍 언어부터 시작해 통계 분석, 수학, 영어 등 모든 분야를 나는 잘 모른다. 이토록 제로베이스일수도 있나 싶다.

 

  하여튼 전혀 모르는 것들을 다루기 위해, 적어도 따라는 가자는 심산으로 대략적인 이해만 하고 넘어간다. 여기 기록하는 것들은 그런 대강의 이해다.

  #공부를 시작하면서도 몇 차례 생각했지만, 내가 가벼이 이해한 것을 "안다"고 생각하는 잘못은 말아야 한다. 나는 적어도 "알만큼 안다"라는 말이 보통 무지에서 출발한다는 점은 배웠다.  

  

 

기초 통계 분석

import scipy as sp

from scipy import stats

 

과학기술계산에 주로 쓰이는 library Scipy, 그 가운데 확률과 통계 관련 stats(statistical functions) 모듈을 쓴다.

 

1) Chi-square검정 (카이제곱검정)

 

두 범주형 변수 사이 관계가 있는지 없는지 (독립성 확인)

 

stats.chisquare(df.column1, df.column2)

p-value

  귀무가설이 참일 때, "관찰한 값 혹은 더 극단적인 값"이 표본 데이터에 나올 조건부 확률. 

  귀무가설(어떤 효과, 차이, 의미) vs 대립가설(귀무가설에 반함) 

 

  참고기사. p-hacking에 대해 다루고 있지만, 쉽게 쓴 p-value에 관한 이야기가 나온다.

http://m.hani.co.kr/arti/science/science_general/888909.html#cb

 

  기사 속에서는 "'도박사가 동전 앞면에 술수를 부려 날 가지고 장난을 치고 있다는 것'을 입증하고 싶다. 저 도박사가 동전을 던졌을 때, 앞면이 일정 수 이상 나올 확률이 일반 동전을 똑같이 던져 일정 수 이상 나올 확률과 얼마만큼 일치하는가."라고 설명하고 있다. 여기서 "도박사는 동전에 장난을 안 쳤다"가 귀무가설, "장난을 쳤다"가 대립가설이다.

 

  #어떤 효과, 차이, 변화 등을 입증하고자 할 때, 귀무가설은 보통 변화 없음/ 차이 없음/ 효과 없음 등으로 설정. 변화를 통해 대립가설이 맞다는 것을 증명하기 위해 p-value를 쓰고는 한다. #P-해킹

 

  #보통 p-value 값이 0.05(5%) 미만 : 귀무가설을 기각

 (그렇다고 대립가설이 맞는 것은 아님, 어쨌든 가능성이 있는 이상 아예 불가능한 이야기는 아님)

 

  #p-value 값뿐 아니라 실제 크기를 중요하게 고려해야한다. 회사의 관점에서는, 어찌됐든 그들도 일정 부분 수익을 발생시켰다(혹은 감소, 어떤 변화든)고 볼 수 있기에. 


2) t-test

 

 독립표본 : 서로 다른 두 집단(A, B)의 평균차이 검정  stats.ttest_ind(A, B) 

     #두 그룹의 var(분산값)이 서로 다른 수일 때(대부분 그렇다) => parameter로 (equal_var=False). 조금 더 정확하다.

 

 대응표본 : 같은 집단의 다른 표본으로 평균차이 검정 stats.ttest_rel(A, A')

3) ANOVA(분산분석)

  ==Analysis of Variation == F-test

 

 stats.f_oneway(A, B, C)

  #oneway : 독립변수(열, 행 등 데이터)가 1개  #A, B, C에 따라 - 값은 적어도 하나는 차이가 있다.
 

4) 상관계수

 

df.corr( )

 1에 가까울수록 양의 상관관계, -1에 가까우면 음의 상관관계, 0에 가까울수록 상관관계 적음 (담에 볼 것: iris dataset)

 

피어슨 상관계수

 stats.pearsonr(A, B)

 

   A열과 B열의 값은 피어슨 상관계수, p-value 두 가지를 뱉어낸다.

 => p밸류로 상관관계가 있는지를 검토하고, 피어슨 상관계수로 어느 정도 강도인지를 파악한다.

             #0.1~0.3 weak / 0.4~0.6 moderate / 0.7~0.9 strong, 심리학 기준 사용

 

오늘의 TML

 

1) 결측치(missing data)가 들어있는 행들을 떨궈내기 column.dropna( )

2) pd.crosstab(df.column1, df.column2)
교차표. 두 열을 교차 비교. 

 #crosstab을 마친 결과물 자체가 데이터프레임

 #(margins=True)로 합계 All 열과 행을 추가할 수 있다.

 #(normalize=True)전체를 합쳤을 때 행 방향, 열 방향으로 해도 1이 되도록 조정/ 자릿값을 맞춘다 #이를 최대값으로 나누면 모든 열의 최댓값을 1로 하며, 자릿수를 맞출 수도 있다.

 

오늘의 프로젝트

 

  데이터 선정 -> DataFrame 기본 열 정리 -> 세부 데이터 정돈&결측치 확인 -> 추후 진행방향 수립

 

오늘의 (다음) 공부할 것

 

  신규고객유치비용(CAC), 전환율(CR), 클릭율(CTR)

  A/B Test

Comments