3장: 수치를 통한 연속형 자료의 요약
Reporting Date: June. 30, 2024
연속형 자료가 어떤 값을 중심으로 분포되어 있는가를 나타내는 중심위치의 측도,
각 자료가 중심위치의 값으로부터 흩어진 정도를 나타내는 퍼진 정도의 측도 등을 다루고자 한다.
1 . 자 료 의 입 력
## 교재 출처 최하단에 표시 ##
# 예제13: 정량 100인 음료수 80병을 임의로 추출하여 그 내용물의 실제 측정된 양을 잰 자료이다.(p.42)
import numpy as np
# 변수 drink에 NumPy 배열을 할당
drink = np.array([98, 99, 100, 99, 99.4, 101.7, 98.8, 101.8, 101.5,
101.8, 102.6, 101, 98.8, 101.4, 99.7, 99.7, 99.7,
100.9, 98.6, 101.4, 102.1, 102.9, 100.8, 101.8,
100, 101.2, 100.5, 101.2, 100.1, 101.6, 101.3, 99.9,
99.4, 99.3, 99.4,101.6, 96.1, 100, 99.7, 99.1, 100.7,
100.8, 100.8, 95.5,100.1, 100.5, 98.9, 99.9, 96.8,
102.4, 100, 103.7, 101.4,99.7, 97.4, 99.5, 97.5,
99.9, 100.3, 100.2, 101.5, 99.4, 99.7, 98.2, 100.3,
100.2, 100.5, 100.4, 101.5, 98.4, 101.4, 98.8, 100.9,
101.1, 100.9, 98.1, 98.7, 99.2, 98.1, 97.2])
중심위치의 측도
2 . 평 균 ( M e a n )
총 자료의 개수 n 을 모든 관측값 x₁, x₂, …, xn 의 합으로 나눈 값.
이를 "산술 평균" 이라고도 하며, 공식으로 표현하면 다음과 같다:
표본 평균은 관측값의 산술평균이며, "극단값" 에 영향을 받는다.
- 표 본 평 균 : 전체 데이터인 "모집단" 에서 추출한 일부 데이터의 평균을 의미한다.
- (예시1) 예제13 에서 추출된 80 병의 음료수는 표본에 해당된다.
- 극 단 값 ( O u t l i e r ) : 데이터 집합에서 다른 값들과 현저히 다른 값들을 의미한다.
- (예시2) 데이터 집합 { 11, 12, 13, 300 } 에서 극단값은 300 이다.
# 2장의 예제 13에서 주어진 음료수 한 병의 부피 데이터를 기반으로
# 평균, 중앙값, 분산, 표준편차, 범위, 사분위수범위를 파이썬을 이용하여 계산하라.(p.83)
## numpy 모듈을 이용하여 계산할 수 있음. ##
# 평균
print(np.mean(drink))
## 출력된 값 > 100.04125 ##
3 . 중 앙 값 ( M e d i a n )
전체 관측값을 "크기 순서로 배열" 했을 때, "가운데" 에 위치한 값.
- 데이터의 개수가 "홀수" 일 경우, 중앙에 위치한 값이 중앙값이다.
- 데이터의 개수가 "짝수" 일 경우, 중앙에 위치한 "두 값의 평균" 이 중앙값이 된다.
항상 중앙의 값을 채택하므로, "극단값의 영향을 받지 않는다."
따라서, 평균과 값이 다를 수 있다.
# 중앙값 계산
print(np.median(drink))
## 출력된 값 > 100.05 ##
퍼진 정도의 측도
4 . 분 산 ( V a r i a n c e )
확률 분포나 데이터 집합의 산포도 ( 분포도 ) 를 나타내는 통계적 측도.
주어진 데이터의 개별 값들이 평균으로부터 "얼마나 멀리 퍼져 있는지"를 나타내는 지표로 사용된다.
관측값이 x₁, x₂, …, xn 이고, 표본평균이 x̄ 일 때, 표본분산은 다음과 같다:
계산과정
- 평 균 과 의 거 리 : 각 데이터 값이 평균으로부터 얼마나 떨어져 있는지를 계산한다.
(예시1) xi – x̄ = 98 – 100.04 = – 2.04 - 제 곱 : 거리를 제곱하여 모든 값을 양수로 만들고, 거리의 상대적 크기를 더 잘 식별하게 한다.
(예시2) – 2.04² = 4.1616 OR 2601/625 - 평 균 제 곱 오 차 의 평 균 : 제곱한 값을 모두 더하고, 데이터의 개수로 나눈 값이다.
4 - 1 . 편 차 ( D e v i a t i o n ) : 각 관측값과 평균의 차이
편차의 합은 항상 0 이므로, 편차의 평균도 항상 0 이다.
그 이유는, 양수 편차들의 합과 음수 편차들의 합이 항상 "상쇄" 되기 때문이다.
퍼진 정도를 측정함에 있어, 멀리 떨어진 정도를 나타내는 "편차의 크기" 가 중요하므로,
따라서, 편차에서 부호를 없애는 방법으로 "제곱" 을 택한 것이다.
4 - 2 . 자 유 도 ( D e g r e e s o f F r e e d o m ) :
위키백과: 통계적 추정을 할 때, 표본자료 중 모집단에 대한 정보를 주는 "독립적인 자료의 수".
나무위키: 추정해야 할 미지수의 개수를 내가 가진 정보의 수에서 뺀 값.
모집단의 분산인 경우:
"모든 데이터가 사용" 되므로, 자유도를 고려할 필요없이 n 으로 나누면 된다.
표본의 분산인 경우:
표본은 모집단에서 추출된 "상대적으로 적은 규모의 집단" 이다.
이 작은 규모의 집단을 바탕으로 계산된 편차의 제곱합은
모집단을 바탕으로 한 것과 "차이" 가 있을 수 밖에 없다.
우리는 편차의 크기를 나타내는 편차의 제곱합을 "정확히 구하는 것이 목적" 이므로,
표본 분산이 모집단의 분산을 "과소 추정하지 않도록" 보정하여,
"통계적 추정의 정확성" 을 높이기 위해 n 이 아닌 n – 1 을 사용하는 것이다.
# 분산 계산 (표본의 분산, 자유도를 1로 설정 = n-1)
print(np.var(drink, ddof=1))
## 출력된 값 > 2.316125000000001 ##
______________________________________________
# 분산 계산 (모집단의 분산, 자유도 고려X = n)
# print(np.var(drink, ddof=0))
print(np.var(drink))
## 출력된 값 > 2.287173437500001 ##
자유도를 고려할 때, 표본의 분산이 더 "크게" 나타나며,
이는 표본 내의 "변동성" 을 보다 정확하게 반영하고 있음을 보여준다.
자유도를 1로 설정하지 않는 것은 n – 1 로 나누지 않는 것과 같으므로, 이점을 주의한다.
5 . 표 준 편 차 ( S t a n d a r d D e v i a t i o n )
분산의 제곱근으로, 데이터의 변동성을 "원래 데이터의 단위" 로 나타낸 값.
이는 분산의 계산과정 중 편차의 제곱합으로 인해 증가된 값을 바로잡아 준다.
# 표준편차 계산 (표본의 표준편차, 자유도를 1로 설정)
print(np.std(drink, ddof=1))
## 출력된 값 > 1.521882058505192 ##
____________________________________________________
# 표준편차 계산 (모집단의 표준편차)
print(np.std(drink))
## 출력된 값 > 1.5123403841397614 ##
표준편차에서도 분산과 동일한 이유로 자유도가 주어진다.
6 . 범 위 ( R a n g e )
관측값에서 가장 큰 값과 가장 작은 값의 차이.
- 장점: 간편하게 구할 수 있고, 해석이 용이하다.
- 단점: 양 끝점에 의해서만 결정되므로, 중간에 위치한 관측값들이 "전혀 반영되지 않는다."
그러므로, "극단값" 에 영향을 받는다.
# 범위 계산 (최대값 - 최소값)
print(np.max(drink) - np.min(drink))
## 출력된 값 > 8.200000000000003 ##
7 . 사 분 위 수 범 위 ( Q u a r t i l e )
전체 관측값을 "작은 순서로 배열" 하였을 때, 전체를 "사등분" 하는 값.
사분위수
- 제1 사분위수: Q ₁ = 제25 백분위수 = 25%
- 제2 사분위수: Q ₂ = 제50 백분위수 = 50% = " 중 앙 값 "
- 제3 사분위수: Q ₃ = 제75 백분위수 = 75%
계산방법
7 - 1 . 사 분 위 수 범 위 ( I n t e r q u a r t i l e R a n g e , I Q R )
# 사분위수 범위 계산 (IQR, Interquartile Range)
q1, q3 = np.percentile(drink, [25, 75]) # 25%와 75% 사분위수 계산
print(q3 - q1)
## 출력된 값 > 2.0250000000000057 ##
pandas 모듈의 DataFrame 객체 내의 멤버 함수인 describe() 함수를 이용하면,
위의 통계량을 한 번에 계산할 수 있다.
import pandas as pd
# 데이터프레임 생성 및 요약 통계량 계산
drink_df = pd.DataFrame(drink) # 데이터를 pandas의 DataFrame으로 변환
summary = drink_df.describe() # 기술 통계량 요약 계산
print(summary)
describe() 함수에서의 std 는 자동적으로 n – 1 로 나누어져서 계산된다.
참고용 블로그: 작은 숫자 특수문자 첨자 및 분수숫자 모음
교제: 통계학: 파이썬을 이용한 분석