zenn.skin 무료버전 배포중!
자세히보기

DataScience

산포도 (사분위수, 범위, 분산, 표준편차)

koosco! 2020. 7. 22. 01:40

- 데이터의 중심이 어디 있는지만으로는 자료의 분석이 쉽지 않다

- 두 데이터가 주어졌을 때, 둘의 평균이 같더라도 흩어진 정도는 다를 수 있다( 평균점수가 같은 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'의 다른글

  • 현재글 산포도 (사분위수, 범위, 분산, 표준편차)

관련글