[python] 파이썬 통계 - 분산(Dispersion)

 파이썬으로 통계에서 분산(Dispersion)을 다루는 코드를 공유합니다. 분산(Dispersion)은 수치 데이터 세트의 각 항목이 평균값에서 얼마나 떨어져 있는지 나타내는 지표입니다. 여기서는 범위(range), 분산(variance), 표준편차(standard deviation)을 계산하게 됩니다.


분산 계산은 아래 수식을 활용합니다.


분산값이 높다는 것은 데이터 세트의 각 항목들이 평균에서 멀리 떨어져 있다는 것을 의미합니다. 위 분산값에 루트를 취한 것이 표준편차입니다. 데이터 세트의 각 항목이 평균에서 떨어진 정도가 표준편차값 이내라면 보편적인 데이터 항목으로 취급하며, 표준편차값 이상이라면 보편적이지 않은 값으로 취급할 수 있으며 통계용어로 이상치 또는 극단치(outliers)라 합니다.


분산에 단순히 루트를 취한 것이 표준편차라면 표준편차의 정의가 왜 필요할까요? 분산은 계산이나 수식표현의 편의를 위해 주로 사용되며, 표준편차는 분산을 데이터 세트와 같은 단위로 보기 위해서 사용합니다. 분산은 정의에 의해, 데이터 세트의 각 항목의 단위값의 제곱이 되기 때문에 원래 단위로 맞춰주기 위하여 루트를 취한 표준편차를 사용하는 것입니다.


'''
최소값, 최대값, 범위(range)를 반환
'''
def find_range(numbers):
    lowest = min(numbers)
    highest = max(numbers)

    # 범위(range) 찾기
    r = highest - lowest

    return lowest, highest, r

'''
평균값을 반환
'''
def calculate_mean(numbers):
    s = sum(numbers)
    N = len(numbers)

    return s/N

'''
편차 (평균값 - 각 항목값) 리스트 반환
'''
def find_differences(numbers):
    mean = calculate_mean(numbers)

    diff = []
    for num in numbers:
        diff.append(num - mean)

    return diff

'''
분산 리스트 반환
'''
def calculate_variance(numbers):
    diff = find_differences(numbers)
    
    squared_diff = []
    for d in diff:
        squared_diff.append(d ** 2)
    
    sum_squared_diff = sum(squared_diff)
    variance = sum_squared_diff / len(numbers)

    return variance


if __name__ == '__main__':
    data_set = [100, 60, 70, 900, 100, 200, 500, 500, 503, 600, 1000, 1200]

    lowest, highest, r = find_range(data_set)
    print('Lowest: {0} Highest: {1} Range: {2}'.format(lowest, highest, r))

    variance = calculate_variance(data_set)
    print('Variance: {0}'.format(variance))

    std = variance ** 0.5
    print('Standard deviation: {0}'.format(std))

    


아래는 실행결과입니다.


Lowest: 60 Highest: 1200 Range: 1140
Variance: 141047.35416666666
Standard deviation: 375.5627166887931


끝.

댓글

이 블로그의 인기 게시물

[PLC] PLC 아날로그 입출력 기본

전력(kW) 계산하기 (직류, 교류 단상, 교류 삼상)

NPN, PNP 트랜지스터 차이점

커패시터에 저장된 에너지 계산

3선 결선식 센서의 타입 PNP, NPN

3상 모터 전력에서 전류 계산하기 (How to Convert Three-Phase Power to Amps)

[아두이노] 가변저항(Potential Divider)과 전압분배(Voltage Divider)

제너 다이오드에 저항을 연결하는 이유

[공압밸브] 5포트 2웨이 & 4포트 2웨이, 단동 VS 복동 차이점

공압 속도 제어: 미터인 vs 미터아웃