데이터를 살펴보는 가장 기초 단계는 각 피처의 '대표값' (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'])
*** 주요 개념 ***
- 가장 기본적인 위치 추정은 평균이지만, 극단값에 민감할 수 있음
- 중간값, 절사평균같은 다른 방법들이 특잇값이나 이상 데이터에 덜 민감함으로 좀 더 로버스트 하다고 볼 수있음
-> 이렇게 중요한걸 다시 집고 넘어가야한다. 책 사고 공부하길 정말 잘했다.
'Machine Learning > Practical Statistics' 카테고리의 다른 글
[Practical Statistics] 이진 데이터와 범주 데이터 탐색 (0) | 2022.03.12 |
---|---|
[Practical Statistics] 데이터 분포 탐색하기 (0) | 2022.03.04 |
[Practical Statistics] 변이 추정 (0) | 2022.03.03 |
[Practical Statistics] 테이블 데이터 (0) | 2022.02.27 |
[Practical Statistics] 탐색적 데이터 분석 (EDA) (0) | 2022.02.25 |