cs

데이터를 살펴보는 가장 기초 단계는 각 피처의 '대표값' (typical value)을 구하는 것

 

  • Mean
    • 모든 값의 총합을 개수로 나눈 값. 

 

  • Weighted Mean
    • 가중치를 곲한 값의 총합을 가중치의 총합으로 나눈 값

 

  • Median
    • 데이터의 가장 가운데 값

 

  • Percentile
    • 전체 데이터의 P%를 아래에 두는 값 (분위수)

 

  • Weighted Median
    • 데이터를 정렬한 후, 각 가중치 값을 위에서부터 더할 때 총 합의 중간이 위치하는 데이터 값 (아래는 보통의 케이스)
    • 어떤 값들이 본래 값들에 비해 큰 변화량을 가질 때, 낮은 가중치를 줄 수 있음 
    • 모든 그룹에 대해서 정확하게 같은 비율을 반영하는 데이터를 수집하기는 어려움-> 가중치를 통해 해결

 

  • Trimmed Mean
    • 정해진 개수의 극단값(extreme value)을 제외한 나머지 값들의 평균 (Truncated mean)

 

  • Robust
    • 극단값들에 민감하지 않다는 것을 의미 (저항성이 있다, resistant)

 

  • Outlier
    •  대부분의 값과 매우 다른 데이터 값(극단값)

 

예제: 인구에 따른 살인 비율의 위치 추정

#기본적인 라이브러리들 불러오고, 이건 처음만 할거다.
import numpy as np
from scipy.stats import trim_mean
from statsmodels import robust
import wquantiles
import pandas as pd

import seaborn as sns
import matplotlib.pylab as plt


#github에서 data를 가지고와서 테스트
state=pd.read_csv('/파일위치/practical-statistics-for-data-scientists-master/data/state.csv')
state.head()

 

평균, 절사평균, 중간값 

#평균
print(state['Population'].mean())

#절사평균
print(trim_mean(state['Population'], 0.1))

#중간값
print(state['Population'].median())

평균 > 절사평균 > 중간값

절사평균은 가장 큰 5개 주의 인구와 가장 작은 5개 주의 인구를 제외. 
즉trim에서 뒤의 0.1은 양쪽 각 끝에서 10%를 제외하는것!
주마다 다른 인구를 고려하기위해 가중 평균이나 가중 중간값을 사용해야 맞음

 

처음에 라이브러리를 불러올 때 'import wquantiles'를 한것은 가중 중간값을 위해서 특별 패키지를 가지고 온것이다.

 

가중 평균, 가중 중간값

#가중 평균을 구하기 위한 값. 
np.average(state['Murder.Rate'], weights=state['Population'])

#가중 중간값을 위해 wquantiles를 사용
wquantiles.median(state['Murder.Rate'], weights=state['Population'])

*** 주요 개념 ***

  • 가장 기본적인 위치 추정은 평균이지만, 극단값에 민감할 수 있음
  • 중간값, 절사평균같은 다른 방법들이 특잇값이나 이상 데이터에 덜 민감함으로 좀 더 로버스트 하다고 볼 수있음

-> 이렇게 중요한걸 다시 집고 넘어가야한다. 책 사고 공부하길 정말 잘했다.

 

 

 

+ Recent posts