Sparta/Theory

[250916] 통계 01 - 분석방법

junecho 2025. 9. 16. 22:01

✅ 통계의 양대산맥                                                   

🔰 기술통계                                                                                                             

데이터를 요약하고 설명하는 통계 방법

  • 데이터를 특정 대표값으로 요약
  • 데이터에 대한 대략적인 특징을 간단하고 쉽게 알 수 있음
  • 단, 데이터 중 예외(이상치)라는게 항상 존재할 수 있고 데이터의 모든 부분을 확인할 수 있는 것은 아님
  • 평균 (Mean)
    • : 데이터의 대표값을 나타내는 값
    • 모든 데이터를 더한 후 데이터의 개수로 나누어 계산
    • 일반적인 경향 파악하는데 유용
  • 중앙값 (Median)
    • : 크기 순서대로 정렬했을 때, 중앙에 위치한 값
    • 이상치에 영향을 덜 받기 때문에 데이터의 중심 경향을 나타내는 또 다른 방법
  • 분산 (Variance)
    • : 데이터 값들이 평균으로부터 "얼마나 떨어져있는지" 나타내는 척도
    • 데이터의 흩어짐 정도를 측정
    • 분산이 크면 데이터가 넓게 퍼져있고, 작으면 평균에 가깝게 모여있음
    • 데이터 값에서 평균을 뺀 값을 제곱 → 모두 더하고 데이터의 개수로 나눔
  • 표준편차 (Standard Deviation)
    • : 데이터의 변동성을 측정, 값이 클수록 데이터가 평균으로부터 더 넓게 퍼져 있음을 의미
    • : 분산이랑 똑같은데, 표준편차는 원래 데이터 값과 동일한 단위로 변환함 ⇒ 직관적

 

🔰 추론통계                                                                                                             

표본 데이터를 통해 모집단의 특성을 추정하고 가설을 검정하는 통계 방법 데이터의 일부를 가지고 데이터 전체를 추정하는 것이 핵심

  • 신뢰구간
    • : 모집단의 평균이 특정 범위 내에 있을 것이라는 확률
    • 일반적으로 95% 신뢰구간이 사용됨 = 모집단 평균이 95% 확률로 이 구간 내에 있음을 의미
    • 표본의 평균을 가지고 모집단의 평균이 대략 어느정도이다 를 알 수 있음
    • 표본 평균 만족도가 75점이고, 신뢰구간이 70~80점이라면 95% 확률로 실제 평균 만족도가 (모집단0이 이 범위 내에 있다고 말할 수 있음
    • 모집단-전체 데이터 / 샘플,표본-전체 데이터의 일부분. 최대한 모집단과 비슷한 특성이 비슷해야함
  • 가설검정
    • 모집단에 대한 가설을 검증하기 위해 사용
    • 귀무가설(H0) : 검증하고자 하는 가설이 틀렸음을 나타내는 기본 가설. - 변화 x 효과 x
    • 대립가설(H1) : 귀무가설과 반대. 주장하는 바를 나타냄. - 변화o효과o\
    • p-value를 통해 귀무가설을 기각할 지 여부를 결정

 

 

✅ 분석 방법                                                               

🔰 위치추정                                                                                                             

  • np.mean() : 평균값
  • np.median() : 중앙값
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
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*

 

🔰 변이추정                                                                                                            

  • np.var() : 분산
  • np.std() : 표준편차
  • 범위(R) : np.max() - np.min()
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

 

🔰 데이터 분포 탐색                                                                                              

  • 히스토그램, box plot ⭕
plt.hist(data, bins=5)
plt.title("histogram")
plt.show()

plt.boxplot(data)
plt.title("boxplot")
plt.show()

 

 

🔰 이진 데이터와 범주 데이터 탐색                                                                   

  • 수치형 데이터 : 숫자로 이루어진 데이터 // 범주 데이터 : 텍스트가 들어가 있는 데이터
  • 최빈값(개수가 제일 많은 값) 주로 사용
  • 파이, 막대 그래프 ⭕
satisfaction = ['satisfaction', 'satisfaction', 'dissatisfaction', 
'satisfaction', 'dissatisfaction', 'satisfaction', 'satisfaction', 
'dissatisfaction', 'satisfaction', 'dissatisfaction']
satisfaction_counts = pd.Series(satisfaction).value_counts()

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

 

히스토그램 / 막대 그래프

    히스토그램 : 수치형 데이터에서 사용. 반드시 구간 정하고 그 구간에 대한 개수를 세는 것

    막대 그래프 : 범주형 데이터에서 사용

 

🔰 상관관계                                                                                                          

  • : 두 변수 간의 관계를 측정하는 방법
  • -1(음의 방향)이거나 1(양의 방향)에 가까워지면 강력한 상관관계를 가짐
  • 0에 가까울 수록 상관관계 X
  • 산점도 scatter ⭕
  • np.corrcoef() : 상관관계 계수. 0.7이상이면 꽤 강한 상관관계가 있다고 봄
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]

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

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

>>>
공부 시간과 시험 점수 간의 상관계수: 1.0

 

인과관계 / 상관관계

    인과관계 : 한 변수가 다른 변수에 미치는 영향. 원인, 결과가 분명해야 함

    상관관계 : 두 변수 간의 관계

 

🔰 다변량 분석                                                                                                    

  • : 여러 변수 간의 관계를 분석하는 방법
  • sns.pairplot() : 산점도인데 각각 변수와의 관계를 다 그려줌
  • sns.heatmap()
  • df.corr() : pandas에서의 상관계수 계산
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()

⇒ 대각선

: 자기 자신과의 상관관계임. 무조건 1이 나올 수밖에 없음

그러므로 굳이 그리지 않아도 되므로 각 순서대로 TV, Radio, Newspaper, Sales에 대한 히스토그램을 그림

 

 

# heatmap 까지 그린다면
sns.heatmap(df.corr())

 

 

'Sparta > Theory' 카테고리의 다른 글

[250916] 통계 03 - 검정  (0) 2025.09.16
[250916] 통계 02 - 분포  (0) 2025.09.16
[250901] pandas visualizer  (0) 2025.09.01
[250830] pandas  (1) 2025.09.01
[250829] 스파르타코딩 본캠프 19일차 (1) - pandas 02  (0) 2025.08.29