오류에 대한 지적이나 질문, 토의 환영합니다. 자유롭게 댓글 남겨주세요!.!
데이터의 수집(collection), 구성 (organization), 분석 (analysis), 해석 (interpretation), 표현(presestation)에 관한 학문입니다.
기술 통계학 (Descriptive statistics)
추측 통계학 (Inferential statistics)
모집단 (Population)
모수 (Parameter)
표본 (Sample)
모집단에서 선택된 개체나 사건의 집합을 말하며,
보통 모집단의 수가 큰 경우 모집단 내 표본을 선택하여 실험을 진행 한 뒤 모수를 추론합니다.
도수 (Frequency)
어떤 사건이 실험이나 관찰로부터 발생한 횟수를 말합니다.
표현방법
도수분포표
A B C 13 5 2
상대도수 )Relative frequency)
평균 (Mean)
모평균(): 모집단 전체 자료일 경우 모평균입니다.
표본평균(): 모집단에서 추출한 표본의 평균이 표본평균입니다.
중앙값 (Median)
평균의 경우 극단 겂의 영향을 많이 받습니다.
주어진 자료를 정렬했을 때 정 가운데에 있는 값을 말합니다.
데이터가 홀수일 경우는 번째 자료값입니다.
데이터의 개수가 짝수일 경우는 번쨰와 번째 자료값의 평균을 중앙값으로 합니다.
(원래 존재하지 않는 데이터일 수 있습니다.)
분산 (Variance)
편차의 제곱의 합을 자료의 수로 나눈 값을 말합니다. (편차: 값과 평균의 차이)
자료가 모집단일 경우
자료가 표본일 경우: (n-1) 아주 중요
=> 값들이 평균을 기준으로 많이 떨어져 있으면 분산이 큽니다.
극단적으로 분산이 0이면 평균과 똑같다고 할 수 있습니다.
표준편차 (Standard Deviation)
범위 (Range)
데이터들의 가장 큰 값과 가장 작은 값의 차이를 말하며, 데이터의 범위는 이 범위 내에 들어 있습니다.
인공지능 feature scailing 할 때 유용하게 사용
사분위 수 (Quartile)
전체 자료를 정렬했을 때 위치에 있는 숫자를 말합니다.
: 제 1 사분위 수, : 제 2 사분위 수, : 제 3 사분위 수, : 제 4 사분위 수
사분위범위 (IQR, Interquartile range)
: 윗 구간과 아랫 구간을 제외하고 중간 정도의 데이터들의 범위를 나타냅니다.
범위(range)는 가장 큰 값과 가장 작은 값에 의존하기 때문에,
데이터들이 한 쪽에 몰려 있는 경우 비효율 적인 범위를 나타내게 됩니다.
그래서 구간을 나누어 범위를 표현하는 방법입니다.
어떤 값이 평균으로부터 몇 표준편차 떨어져 있는지를 의미하는 값을 말합니다.
모집단의 경우
표본의 경우
import statistics
a = [79, 54, 74, 62, 85, 55, 88, 85, 51, 85, 54, 84, 78, 47]
b = [79, 54, 74, 62, 85, 55, 88, 85, 51, 85, 54, 84, 78, 47, 1000]
print('a:', a)
print('len(a):', len(a))
print('b:', b)
print('len(b):', len(b))
a: [79, 54, 74, 62, 85, 55, 88, 85, 51, 85, 54, 84, 78, 47]
len(a): 14
b: [79, 54, 74, 62, 85, 55, 88, 85, 51, 85, 54, 84, 78, 47, 1000]
len(b): 15
mean_a = statistics.mean(a)
print('mean_a:', mean_a)
mean_a: 70.07142857142857
print('b:', sorted(b))
mean_b = statistics.mean(b)
print('mean_b:', mean_b)
b: [47, 51, 54, 54, 55, 62, 74, 78, 79, 84, 85, 85, 85, 88, 1000]
mean_b: 132.06666666666666
median_b = statistics.median(b)
print('median_b:', median_b)
print('mean_a:', mean_a)
median_b: 78
mean_a: 70.07142857142857
var_a = statistics.variance(a)
print('var_a:', var_a)
var_a: 234.37912087912088
var_b = statistics.variance(b)
print('var_b:', var_b)
57868.78095238096
scipy
패키지 이용from scipy import stats
var_aa = stats.tvar(a)
print('var_aa:', var_aa)
var_aa: 234.37912087912088
statistics.stdev(a)
15.30944547915178
statistics.stdev(b)
240.55930859640614
statistics.pvariance(a)
217.6377551020408
statistics.pvariance(b)
54010.86222222223
statistics.pstdev(a)
14.752550799846134
statistics.pstdev(b)
232.40237137822461
import numpy as np
np.var(a)
217.6377551020408
np.std(a)
14.752550799846134
np.var(a, ddof=1)
234.37912087912088
np.std(a, ddof=1)
15.30944547915178
max(a) - min(a)
41
max(b) - min(b)
953
np.max(a) - np.min(a)
41
np.quantile(a, 0.25)
54.25
np.quantile(a, 0.5)
76.0
np.quantile(a, 0.75)
84.75
np.quantile(a, 0.60) #
78.8
np.quantile(a, 0.75) - np.quantile(a, 0.25)
30.5
np.quantile(b, 0.75) - np.quantile(b, 0.25)
30.5
print('a:', a)
print('mean:', statistics.mean(a))
print('모표준편차(population standard deviation):', statistics.pstdev(a))
a: [79, 54, 74, 62, 85, 55, 88, 85, 51, 85, 54, 84, 78, 47]
mean: 70.07142857142857
모표준편차(population standard deviation): 14.752550799846134
scipy.stats.zscore(a)
array([ 0.60522221, -1.08939998, 0.26629777, -0.54712088, 1.01193154,
-1.02161509, 1.2152862 , 1.01193154, -1.29275464, 1.01193154,
-1.08939998, 0.94414665, 0.53743732, -1.5638942 ])
print('a:', a)
print('mean:', statistics.mean(a))
print('표본표준편차((sample)standard deviation):', statistics.stdev(a))
a: [79, 54, 74, 62, 85, 55, 88, 85, 51, 85, 54, 84, 78, 47]
mean: 70.07142857142857
표본표준편차((sample)standard deviation): 15.30944547915178
scipy.stats.zscore(a, ddof=1)
array([ 0.58320672, -1.04977209, 0.25661096, -0.52721887, 0.97512163,
-0.98445294, 1.17107909, 0.97512163, -1.24572955, 0.97512163,
-1.04977209, 0.90980248, 0.51788756, -1.50700616])
이 글은 프로그래머스 스쿨 인공지능 데브코스 과정에서 공부한 내용을 바탕으로 정리한 글입니다.