- 데이터의 중심이 어디 있는지만으로는 자료의 분석이 쉽지 않다
- 두 데이터가 주어졌을 때, 둘의 평균이 같더라도 흩어진 정도는 다를 수 있다( 평균점수가 같은 A반과 B반)
- 산포도는 주어진 데이터가 얼마나 퍼져있는지를 나타낸다
- 0에 가까울수록 값이 몰려 있고, 값이 클수록 값이 넓게 퍼져있다
1. 범위(range)
- 범위는 산포도를 나타내는 가장 간단한 통계치이다
- 범위는 가장 큰 값에서 가장 작은 값을 뺀 값이다
- 이상치에 민감하다(튀는 값 하나만 있더라도 범위가 매우 커진다)
def data_range(xs):
return max(xs)-min(xs)
2. 사분위수(quartile)
- 사분위수는 자료를 정렬한 후에 백분율을 4 등분한 각 점을 의미한다
제1사분위수 | 제2사분위수 | 제3사분위수 | 제4사분위수 | |
백분율(%) | 25 | 50 | 75 | 100 |
- 제2사분위수는 중앙값과 동일하다
- 범위는 이상치에 민감하다
- 더 안정적으로 편차를 구할 때, 사분위수를 사용할 수 있다
- 상자그림을 이용하면 쉽게 파악할 수 있다
def quartile(xs, p):
index=int(p*len(xs))
return sorted(xs)[index]
- 제3사분위수와 제1사분위수 사이의 값들로 범위를 한정하면 이상치를 제거할 수 있다
def quartile_range(xs):
return quartile(xs,0.75)-quartile(xs,0.25)
3. 분산(variance)
- 분산은 각 데이터가 평균에서 얼마나 떨어져 있는지를 나타낸다
- 범위와 마찬가지로 이상치에 민감하다
- 평균을 구하고 모든 데이터에 평균을 빼주면, 각 데이터가 평균에서 얼마나 떨어져 있는지 알 수 있다
- 뺀 상태에서는 음수와 양수를 모두 갖고 있기 때문에 모두 더하면 0이 돼버린다
- 제곱을 취해 부호를 모두 양수로 만들어준 뒤 모두 더해준다
- 주어진 자료의 개수로 나누어 준다
def mean(xs):
return sum(xs)/len(xs)
def variance(xs):
n=len(xs)
de_mean=[(x_i-mean(xs))**2 for x_i in xs]
var=sum(de_mean)/n
return var
- 분산을 이용하면 자료가 얼마나 퍼져있는지 파악하기 쉽다
- 하지만 제곱을 취했기 때문에 분산의 단위는 기존 단위의 제곱이 된다
4. 표준편차(standard deviation)
- 표준편차는 분산에 제곱근을 취한 값이다
- 분산은 음수를 포함하지 않기 위해 모든 값들을 제곱해 주었다(단위가 다르고 값이 매우 커진다)
- 분산에 제곱근을 취하여 기존의 단위와 같게 만들어 준다
def standard_deviation(xs):
return math.sqrt(variance(xs))
'DataScience' 카테고리의 다른 글
이항분포의 정의와 평균, 분산 (0) | 2020.08.02 |
---|---|
베르누이분포의 정의와 평균, 분산 (0) | 2020.08.02 |
[Numpy] 개요 (0) | 2020.08.02 |
중심 경향성 (평균, 중앙값, 최빈값) (0) | 2020.07.22 |
기하분포의 정의와 평균 (0) | 2020.04.24 |