pbj0812의 코딩 일기

[통계학] python을 통한 왜도 / 첨도 구현 본문

Science/통계학

[통계학] python을 통한 왜도 / 첨도 구현

pbj0812 2020. 8. 16. 14:27

0. 목표

 - python으로 왜도와 첨도를 구현하고 scipy 함수와 비교

1. 사전이론

 1) 왜도

  - 사진링크

 2) 첨도

  - 사진링크

2. 사전 함수 준비

 1) 평균

def mean(inp):
    result = 0
    len_inp = len(inp)    
    for i in inp:
        result += i
    result = result / len_inp
    return result

 2) 분산

def var(inp):
    result = 0
    len_inp = len(inp)
    for i in inp:
        result += (i - mean(inp)) ** 2
    result = result / len_inp
    return result

 3) 제곱근

def sqrt(inp):
    result = inp/2
    for i in range(30):
        result = (result + (inp / result)) / 2
    return result

 4) 표준편차

def std(inp):
    result = sqrt(var(inp))
    return result

3. 왜도

 1) 함수 제작

def skewness_self(inp):
    # 길이
    len_inp = len(inp)
    result = 0
    for i in inp:
        result += ((i - mean(inp)) / std(inp)) ** 3
    result = result / len_inp
    return result

 2) 확인

  - inp1 의 데이터는 왼쪽으로 치우치게, inp2의 데이터는 오른쪽으로 치우치게 생성

  - 결과 : 1.0606601717798216 -0.7680464255426249

inp1 =[1, 1, 1, 1, 1, 1, 2, 3, 4, 5]
inp2 = [1, 2, 3, 4, 5, 6, 6, 6, 6, 6]

print(skewness_self(inp1))
print(skewness_self(inp2))

 3) scipy 함수와 비교

  - 결과 : 1.0606601717798212 -0.7680464255426249

from scipy.stats import skew

print(skew(inp1))
print(skew(inp2))

4. 첨도

 1) 함수 제작

def kurtosis_self(inp):
    # 길이
    len_inp = len(inp)
    result = 0
    for i in inp:
        result += ((i - mean(inp)) / std(inp)) ** 4
    result = (result / len_inp) - 3
    return result

 2) 확인

  - inp1의 데이터는 균등하게 숫자를 배분, inp2의 데이터는 중앙에 밀집하게 제작

  - 결과 : -1.2242424242424241 2.351887069895109

inp1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
inp2 = [1, 2, 3, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,  5, 5, 5, 5, 6, 7, 8, 9, 10]

print(kurtosis_self(inp1))
print(kurtosis_self(inp2))

 3) scipy 함수와 비교

  - 결과 : -1.2242424242424244 2.351887069895106

from scipy.stats import kurtosis

print(kurtosis(inp1))
print(kurtosis(inp2))

5. 참고

 - 왜도, 첨도, 정규성(경북대학교 김병수 교수님 연구실)

 - 통계학 도감(쿠리하라 신이치, 마루야마 아츠시)

 - scipy(왜도)

 - scipy(첨도)

Comments