목표
통계를 배워보자
우리는 왜 통계를 배워야 하는가?
- 데이터의 분포, 중앙값, 분산등을 이해하는데, 도움을 주며 이는 ai 모델 성능에 영향을 줄 수 있다.
- 데이터를 분석해서 패턴을 찾고 예측한다
1. 대푯값을 찾아라 - 평균값, 중앙값, 최빈값
실무에서 어떤 값을 기준으로 고려할지 생각해보자
1) 평균값 - 산술평균, 기하평균, 조화평균
산술평균 - 정말 평균 값을 알고 싶을때, 예를 들어 n명의 연봉 평균
=> (a의 연봉 + b의 연봉 + c의 연봉) / (3)
import pandas as pd
df = pd.read_excel('{}.xlsx')
df.mean()
기하평균 - 연 평균 증가율을 알고 싶을때, 예를 들어 매출 증가액
=> 회사의 매출액 2019년 15억, 2020년 30억, 2021년 25억 연 평균 매출 증가율
1차 관측된 값
2019 -> 2020 ((30억 - 15억) / 2 ) / 15억 => 1 (100%)
2020 -> 2021 ((25억 - 30억) / 2) / 30억 => -1/6 (-16.66%)
2차 기하평균을 내는 값
((1+1)X(1+(-0.1666)))½ = 1.29
평균적 129% 매출 매년 성장
2019->2020 (15억 x 100% + 15억 x 29%) => 4.35억 증가, 19.35억
2020->2021 (19.35억 x 100% + 19.35억 * 29%) => 5.61억 증가, 24.96억
import pandas as pd
dict = {'ym' : ['2019','2020','2021'], 'sales' : [15,30,25]}
origin = pd.DataFrame(dict)
temp = origin.copy()
temp['comp'] = temp['sales'].shift(-1)
temp.dropna(axis = 0, inplace = True)
# 1차 관측된 값
temp['rate1'] = round((temp['comp'] - temp['sales']) / temp['sales'], 3)
# 2차 기하평균
temp['rate2'] = 1 + temp['rate1']
from functools import reduce
arr = temp['rate2']
mean = pow(reduce(lambda x, y: x * y, arr), 1/(len(origin) - 1))
print(f"매출 증가액 : {mean}")
ori_value = 15
for i in range(1,6) :
ori_value = round(ori_value * mean, 2)
print(f"{2019 + i} 예상 매출액 : { ori_value}억")
origin
조화평균 - 동일한 경로로 다르게 해서 달릴때, 평균을 구하고자 한다.
=> 배달 갈때, 3m/s 올때, 1m/s 평균 속력은?
평균 속력 = 거리 / 시간
평균 속력 = (왕복거리) / (총 시간)
평균 속력 = (2d) / (d/3 + d/1)
평균 속력 = 2d / ((3+1)d / (3x1))
평균 속력 = (2d X (3X1)) / (3 + 1)d
평균 속력 = 2(3x1) / (3+1)
평균 속력 = 1.5m/s
2) 중앙값
홀수 - 정렬후 인덱스 중앙 값
짝수 - 정렬후 인덱스 중앙 2개의 평균값
import pandas as pd
df = pd.read_excel('{}.xlsx')
df.median()
3) 최빈값
가장 빈도가 높은 값
import pandas as pd
df = pd.read_excel('{}.xlsx')
df.mode()
or
df.groupby('ym')['사고건수'].agg(pd.Series.mode)
'FastCampus UpStage AI > 통계' 카테고리의 다른 글
FastCamPus X Upstage AI 5기 Statistics(통계학) 강의 (0) | 2024.10.11 |
---|---|
기술 통계 + 통계 실험과 유의성 검사 (0) | 2024.10.09 |
기초 통계량 - 데이터 분포 이해 (분산도) (0) | 2024.10.08 |