기술 통계: 변산성 측정치
변산성(Variability)
- 중심 경향치만으로는 데이터의 전체적인 모양을 파악하기 어려움
- 데이터가 평균이나 중간값 주변에 얼마나 모여 있는지, 혹은 넓게 퍼져 있는지를 나타내는 척도
- 분산도(Dispersion) 또는 산포도라고도 함
- 왜 변산성을 측정해야 하는가?
- 평균이 같더라도 데이터의 퍼짐 정도에 따라 데이터의 특성이 완전히 다를 수 있음
- 퍼짐 정도가 작으면 중심값 주변에 데이터가 밀집되어 있어 중심값이 전체를 잘 대표함
- 퍼짐 정도가 크면 불확실성이 크고 극단적인 값이 존재할 가능성이 높음
범위(Range)
- 데이터 세트에서 최댓값과 최솟값의 차이
- 계산이 직관적이고 매우 간단함
- 예: 최대 속도가 30노트, 최소 속도가 10노트일 때 범위는 20노트
- 극단적인 이상치(outlier) 하나만 있어도 값이 크게 변하므로 안정적이지 않음
🤖 AI 프롬프트
df에서 speed의 최솟값, 최댓값, 범위(최댓값과 최솟값의 차이)를 각각 구해줘.
df["speed"].min() # 속도 최솟값
실행 결과
np.float64(5.2)
df["speed"].max() # 속도 최댓값
실행 결과
np.float64(34.5)
df["speed"].max() - df["speed"].min() # 속도 범위
실행 결과
np.float64(29.3)
- 최솟값은 5.2노트, 최댓값은 34.5노트. 속도 범위는 29.3노트
분산(Variance)
- 각 데이터 값이 평균에서 얼마나 떨어져 있는지(편차)를 제곱하여 계산한 퍼짐의 척도
- 값이 클수록 데이터가 넓게 흩어져 있다는 의미
- 편차에는 양수와 음수가 있으므로 제곱하여 부호가 상쇄되는 것을 방지
- 표본분산: 편차 제곱의 합을 n−1로 나눈 값. pandas의
var()기본 계산 - 제곱을 했기 때문에 단위도 제곱이 되어 직관적인 해석이 어려움
- 평균 절대 편차(MAD): 편차의 절댓값을 평균 낸 값
🤖 AI 프롬프트
df에서 speed의 표본분산을 구해줘.
df["speed"].var() # 속도의 표본분산
실행 결과
np.float64(15.445216161616163)
- 속도의 표본분산: 약 15.445노트²
표준편차(Standard Deviation)
- 분산에 양의 제곱근을 취한 값
- 원래 데이터와 동일한 단위를 가지므로 해석이 매우 직관적
- 대부분의 통계 분석에서 데이터의 흩어짐을 나타내는 대표적인 척도로 사용
🤖 AI 프롬프트
df에서 speed의 표본표준편차를 구해줘.
df["speed"].std() # 속도의 표본표준편차
실행 결과
np.float64(3.930040223918346)
- 속도의 표준편차: 약 3.93노트. 속도 값들이 평균 주변에서 얼마나 퍼져 있는지 나타냄
표준편차를 활용한 이상치 식별
- 정규 분포를 따르는 경우, 평균을 중심으로 ±3× 표준편차를 벗어나는 데이터를 이상치로 간주하는 경우가 많음(3시그마 규칙)
- 직관적이고 계산이 빠름
- 평균과 표준편차 자체가 이상치에 취약하므로 데이터가 크게 왜곡된 경우 부정확할 수 있음
🤖 AI 프롬프트
df의 speed가 평균에서 3 표준편차를 벗어나는 행을 보여줘
m = df["speed"].mean()
s = df["speed"].std()
lower = m - 3 * s
upper = m + 3 * s
lower # 3시그마 하한선
실행 결과
np.float64(6.51587932824496)
upper # 3시그마 상한선
실행 결과
np.float64(30.096120671755035)
df.query("speed < @lower or speed > @upper")[["ship_name", "speed"]]
실행 결과
ship_name speed
5 Ship_006 5.2
10 Ship_011 34.5
df.query()에서@를 사용하면 데이터프레임 바깥의 변수를 참조- 하한선 약 6.516노트, 상한선 약 30.096노트
- 기준을 벗어난 선박:
Ship_006(5.2노트),Ship_011(34.5노트)
퀴즈
- 계산 문제는
ship.xlsx를 불러온df의crew_size열 전체를 사용
표준편차가 클수록 데이터는 어떻게 분포하나요?
퀴즈를 풀려면 대화형 기능을 불러와야 합니다.