# 머신러닝 없이 데이터 분석을 위한 통계 방법들
통계 도구들은 복잡한 머신러닝 모델 없이 데이터를 빠르게 평가할 수 있게 해줍니다. 가중 평균은 관측값의 중요도를 반영하고, 표준편차와 분산은 데이터의 이질성을 드러내며, 푸아송 분포와 이항 분포는 희귀 사건을 예측합니다. numpy와 pandas를 활용한 Python 방법들은 비즈니스 지표를 분석하는 중급/시니어 개발자에게 이상적입니다.
가중 평균: 이상치 왜곡 보정
일반 평균은 이상치에 취약합니다. $10 (이사급)과 $0.10 (청소부, 가중치 10)의 급여 예시에서 평균이 $5.05가 되는데, 이는 현실을 반영하지 않습니다. 가중 평균이 이를 해결합니다:
import numpy as np
salary = np.array([10.0, 0.10])
weight = np.array([1, 10])
result = np.sum(salary * weight) / np.sum(weight)
print(f"Weighted average: ${result:.2f}")
출력: $1.00. 응용 사례:
- 트래픽을 반영한 판매 채널별 매출 분석.
- 이벤트 발생 빈도가 다른 지표 평가.
- 가중치를 적용한 고객 세그먼트 그룹화.
표준편차와 분산: 안정성 평가
표준편차는 평균 주위의 퍼짐 정도를 측정합니다. 급여 [500, 400, 450, 550, 5000] 예시:
import pandas as pd
import numpy as np
data = {
"Employee": ["Ivan", "Maria", "Oleg", "Anna", "CEO"],
"Salary": [500, 400, 450, 550, 5000]
}
df = pd.DataFrame(data)
n = len(df['Salary'])
mean_ = df['Salary'].mean()
s = np.sqrt(np.sum((df['Salary'] - mean_) ** 2) / (n - 1))
print(f"Standard deviation: {s:.2f}")
결과: 2024.41 — 강한 이상치 지표입니다. 분산(편차의 제곱)은 데이터셋 비교에 유용합니다:
import numpy as np
sales = np.array([90, 95, 92, 93, 91, 200, 210])
mean_sales = np.mean(sales)
dispersion = np.sum((sales - mean_sales) ** 2) / (len(sales) - 1)
print("Variance:", dispersion)
요일별(평일 vs 주말) 퍼짐 분석에는 데이터 세분화가 필요합니다.
피어슨 상관계수: 인과가 아닌 선형 관계
피어슨 상관계수는 선형 종속성을 평가합니다. 공식:
import numpy as np
X = np.array([1, 2, 3, 4, 5]) # study hours
Y = np.array([50, 55, 60, 65, 70]) # test scores
x_mean = np.mean(X)
y_mean = np.mean(Y)
corXY = np.sum((X - x_mean) * (Y - y_mean))
corr_sqrt = np.sqrt(np.sum((X - x_mean)**2) * np.sum((Y - y_mean)**2))
res = corXY / corr_sqrt
print(f"Pearson correlation: {res:.2f}")
r=1.00 — 완벽한 상관입니다. 제곱(r²)은 설명된 변동 비율(회귀에서 결정계수)을 나타냅니다. 기억하세요: 상관 ≠ 인과 (예: 노인의 골프와 사망률).
카이제곱 검정: 기대치 vs 현실 비교
카이제곱은 관측값(O)과 기대값(E)을 비교합니다:
import numpy as np
O = np.array([1, 2, 3, 4, 7, 9, 11, 13, 14]) # observed
E = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9]) # expected
xi = np.sum((O - E) ** 2 / E)
print(f"Chi-square statistic: {xi:.2f}")
조건: 동일 길이, E > 0. 값이 클수록 불일치가 큽니다. 예측 검증에 사용됩니다.
푸아송 분포: 희귀 사건 모델링
간격당 평균 λ의 일정 강도 사건에 적합합니다. k 사건 확률:
import math
λ = 3 # srednesutochnoe count requests
k = 5
prob = (λ ** k) * math.exp(-λ) / math.factorial(k)
print(f"Probability 5 requests: {prob:.4f}")
결과: 0.1008. 가정: 독립성, 일정 확률, 한 번에 하나의 사건. 응용:
- 지원 호출 예측.
- 웹사이트 주문 추정.
- 보안 사고 분석.
- 금융 리스크.
이항 분포: 시행에서의 성공
n 시행, 성공 확률 p에서 k 성공 확률:
import math
n = 100
k = 70
p = 0.7
b_coef = math.factorial(n) / (math.factorial(k) * math.factorial(n - k))
prob = b_coef * (p ** k) * ((1 - p) ** (n - k))
print(f"Probability 70 otkrytiy: {prob:.6f}")
예시: 이메일 개봉, A/B 테스트, 품질 관리.
지수 분포: 사건까지의 간격
λ에서 시간 x 후 사건 확률:
import math
lambd = 4 # vyzovov/hour
x = 1 / 3 # 20 min
prob = lambd * math.exp(-lambd * x)
print(f"Probability vyzova cherez 20 min: {prob:.4f}")
대기열, 장비 다운타임에 사용.
주요 요약
- 가중 평균과 편차는 머신러닝 없이 왜곡을 탐지합니다.
- 상관은 관계를 평가하고, r²는 설명된 변동을 나타냅니다.
- 푸아송과 이항은 비즈니스 사건 예측에 적합합니다.
- 카이제곱은 최소 데이터로 가설을 검증합니다.
- 모든 방법은 numpy/pandas로 구현 가능하며 GPU가 필요 없습니다.
— Editorial Team
아직 댓글이 없습니다.