[통계/인강] 챕터1 - 통계 중요성 & 기술통계/추론통계 & 다양한 분석방법

1-1. 데이터 분석에 있어서 통계가 중요한 이유

  • 데이터 분석에서 통계는 데이터를 이해하고 해석하는 데 중요한 역할
  • 데이터를 요약하고 패턴을 발견
  • 추론을 통해 결론을 도출하는 과정을 도움
  • 즉, 데이터 기반의 의사결정 가능
  • 결국 기업이 보다 현명한 결정을 내리고 수익을 창출하기 위해 필요!!
데이터 기반의 의사결정을 내릴 수 있음! 통계를 활용한 데이터 분석은 필수이다!!

 

실제로 통계가 어떻게 사용되어 질까요?

  • 고객 만족도 설문조사 분석
    • 설문 조사 중 고객의 불만 사항을 파악하고 이를 개선하는 데 활용

  • 고객 유형 세그먼트(Segment) 상품 추천
    • 고객을 유형별로 나누어 특징을 파악 ➡️ 각 유형에 맞는 상품 추천에 활용

  • 그 밖에도 다양한 상황에서 사용되어질 수 있다!
    • 기업의 전략 수립
    • 마케팅 진행
    • 신제품 개발 등등

1-2. 기술통계와 추론통계

1) 기술통계

데이터를 요약하고 설명하는 통계 방법
  • 평균, 중앙값, 분산, 표준편차 등을 사용 : 대푯값
  • 데이터를 대푯값으로 요약!!
  • 예: 사람을 만날 때 그 사람의 전체는 알 수 없지만 기본적인 인적사항들(외모, 직업, 학력, 나이,  MBTI 등)으로 그 사람에 대한 요약을 할 수 있음 ➡️ 다만, 전부를 아는 것은 아님!!
  • 평균 (mean) : 모든 데이터를 더한 후 데이터의 개수로 나누어 계산하여 나온 값
    • 이상치(예외적인 값들)에 영향을 크게 받음
  • 중앙값 (median) : 데이터셋을 크기 순서대로 정렬했을 때 중앙에 위치한 값
    • 이상치(예외적인 값들)에 영향을 덜 받음 
  • 분산 (variance) : 데이터 값들이 평균으로부터 얼마나 떨어져 있는지를 보여주는 척도, 데이터의 흩어짐 정도를 측정
    • 크면 데이터가 넓게 퍼져 있고, 작으면 데이터가 평균에 가깝게 모여 있음
    • 구하는 법 : 각각의 데이터 값에서 평균을 뺀 값을 제곱 후, 이를 모두 더하고 데이터 개수로 나누어진 값
  • 표준편차 (standard deviation) : 데이터 값들이 평균에서 얼마나 떨어져 있는지를 나타내는 통계적 척도
    • 분산의 제곱근으로 계산
    • 데이터의 변동성을 측정, 값이 클수록 데이터가 평균으로부터 더 넓게 퍼져 있음을 의미
  • 분산과 표준편차의 관계
    • 변동성을 측정하는 척도
    • 표준편차는 분산의 제곱근
    • 표준편차는 원래 데이터 값과 동일한 단위로 변환됨 : 직관적

 

2) 추론 통계

표본 데이터를 통해 모집단의 특성을 추정하고 가설을 검정하는 통계 방법
  • 신뢰구간, 가설검정 등을 사용
  • 일부를 가지고 전체를 추정하는 것이 핵심
  • 예: 비록 그 사람의 인생 전체를 다 본 것은 아니지만 대화를 진행하는 시간 동안 얻어낸 정보로 그 사람이 어떤 사람일지 알아가는 것과 같음. 나아가 여러번 만나면 만날수록 더 그 정보가 많아지고 신뢰도가 높아짐
  • 신뢰구간 (confidence interval) : 모집단의 평균이 특정 범위 내에 있을 것이라는 확률
    • 만약 어떤 설문조사(표본)에서 평균 만족도가 75점이고, 신뢰구간이 70점에서 80점 이라면, 우리는 95% 확률로 실제 평균 만족도가 이 범위 내에 있다고 말할 수 있다.
  • 가설검정 (hypothesis testing) : 모집단에 대한 가설을 검증하기 위해 사용
    • 귀무가설(H0) : 검증하고자 하는 가설이 틀렸음을 나타내는 기본 가설(변화가 없다, 효과가 없다 등)
    • 대립가설(H1) : 귀무가설와 반대로, 주장하는 바를 나타내는 가설(변화가 있다, 효과가 있다 등)
    • p-value를 통해 귀무가설을 기각할지 여부를 결정함.
    • 예: 새로운 교육 프로그램이 학생들의 성적에 영향을 미치는지 알고 싶다면?
      • 귀무가설 "프로그램이 성적에 영향을 미치지 않는다" | 대립가설 "프로그램이 성적에 영향을 미친다"

1-3. 다양한 분석 방법

# 데이터 분석에서 자주 사용되는 라이브러리
import pandas as pd
# 다양한 계산을 빠르게 수행하게 돕는 라이브러리
import numpy as np
# 시각화 라이브러리
import matplotlib.pyplot as plt
# 시각화 라이브러리2
import seaborn as sns

1) 위치추정 : 데이터의 중심을 확인하는 방법!

# 이 data는 아래에서도 계속 사용 됩니다
data = [85, 90, 78, 92, 88, 76, 95, 89, 84, 91]
mean = np.mean(data)
median = np.median(data)

print(f"평균: {mean}, 중앙값: {median}")

>>> 출력
	평균: 86.8, 중앙값: 88.5

2) 변이추정 : 데이터들이 서로 얼마나 다른지 확인하는 방법!  분산, 표준편차, 범위(range) 등

  • 범위 : 데이터셋에서 가장 큰 값과 가장 작은 값의 차이를 나타내는 간단한 분포의 측도
  • 범위를 통해 데이터가 어느 정도의 변동성을 가지는지 쉽게 파악
  • 계산이 간단하여 기본적인 데이터 분석에서 자주 사용!
  • 수식 
    • 범위(R) = 최대값 - 최소값
    • 예: 시험점수 [60, 70, 80, 90, 100] 가정 ➡️ 최대값=100, 최소값=60 | 범위=100-60=40
    • 예: 매출 데이터의 변이를 분석하여 비즈니스의 안정성을 평가
# 분산, 표준편차, 범위
variance = np.var(data)
std_dev = np.std(data)
data_range = np.max(data) - np.min(data)

print(f"분산: {variance}, 표준편차: {std_dev}, 범위: {data_range}")
>>> 출력:
	분산: 33.36, 표준편차: 5.775811631277461, 범위: 19

3) 데이터 분포 탐색 : 데이터의 값들이 어떻게 이루어져 있는지 확인하기

  • 히스토그램과 박스플랏(boxplot)데이터의 분포를 시각적으로 표현하는 대표적인 방법 (* 히스토그램 vs 막대그래프 : 다름)
  • 시험점수의 분포
# 히스토그램
plt.hist(data, bins=5)
plt.title('histogram')
plt.show()

# 박스플랏
plt.boxplot(data)
plt.title('boxplot')
plt.show()

히스토그램 박스플랏

4) 이진 데이터와 범주 데이터 탐색 : 데이터들이 서로 얼마나 다른지 확인하는 방법! (vs 수치형 데이터 )

  • 최빈값(개수가 제일 많은 값)을 주로 사용
  • 파이그램과 막대 그래프 ➡️ 이진 데이터와 범주 데이터의 분포를 표현하는 대표적인 방법 
  • 예: 고객 만족도 설문의 만족/불만족 빈도 분석
  • 만족도의 분포
# 이진 데이터와 범주 데이터의 그래프
satisfaction = ['satisfaction', 'satisfaction', 'dissatisfaction', 
'satisfaction', 'dissatisfaction', 'satisfaction', 'satisfaction', 
'dissatisfaction', 'satisfaction', 'dissatisfaction']
satisfaction_counts = pd.Series(satisfaction).value_counts()

satisfaction_counts.plot(kind='bar')
plt.title('satisfaction distribution')
plt.show()

범주 데이터의 막대그래프

5) 상관관계 : 데이터들끼리 서로 관련이 있는지 확인하는 방법!

  • 두 변수 간의 관계를 측정하는 방법
  • 계산하서 -1이나 1에 가까워지면 강력한 상관관계를 가짐 (음의 상관관계 / 양의 상관관계)
  • -0.5나 0.5를 가지면 중간정도의 상관관계를 가짐
  • 0에 가까울 수록 상관관계가 없음
  • 예: 공부 시간과 시험 점수 간의 상관관계 분석!!
# 5)상관관계
study_hours = [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
exam_scores = [95, 90, 85, 80, 75, 70, 65, 60, 55, 50]
correlation = np.corrcoef(study_hours, exam_scores)[0, 1] # ⬅️ [0, 1]은 왜??

print(f"공부 시간과 시험 점수 간의 상관계수: {correlation}")

plt.scatter(study_hours, exam_scores)
plt.show()

상관관계 - scatter(산점도)

6) 💡인관관계와 상관관계의 차이 : 인과관계는 상관관계와는 다르게 원인, 결과가 분명해야 함!

  • 상관관계 : 두 변수 간의 관계 
  • 인과관계 : 한 변수가 다른 변수에 미치는 여향
  • 예: 아이스크림 판매량과 익사 사고 ➡️ 상관관계는 높지만, 인과관계는 아님!!

7) 두 개 이상의 변수 탐색 = 다변량 분석 : 여러 변수 간의 관계를 분석하는 방법!

  • 예: 여러 마케팅 채널의 광고비와 매출 간의 관계 분석
  • 페어플랏(pairplot)과 히트맵(heatmap)을 표현
  • 파이썬 실습
# 7) 두 개 이상의 변수 탐색
data = {'TV': [230.1, 44.5, 17.2, 151.5, 180.8],
        'Radio': [37.8, 39.3, 45.9, 41.3, 10.8],
        'Newspaper': [69.2, 45.1, 69.3, 58.5, 58.4],
        'Sales': [22.1, 10.4, 9.3, 18.5, 12.9]}
df = pd.DataFrame(data)

sns.pairplot(df)
plt.show()

df.corr()
# heatmap까지 그린다면 : 색깔로 표현 가능
sns.heatmap(df.corr())

두 개 이상의 변수 탐색 - pairplot과 heatmap

끝.