LG DX DATA SCHOOL

01/05 통계 분석의 이해

getfeelingsfrom 2026. 1. 5. 16:04

상관관계 : 상관관계란 두 변량 사이에서 한 변량의 변화에 따라 다른 변량이 선형적으로 함께 변화하는 관계이다.

 

인과관계 해야되면 회귀분석 해야되는 듯 ?? 

 

마이크로SSA모델?? 에이전트 하나 만들어ㅓ둔 후 그거롤 돈을 벌으래~ 

 

공분산 (covariance) 

  • 두 확률변수 x, y가 함께 어떻게 변하는지를 나타내는 통계량
  • cov(x, y) = 0 : 선형적인 관계 없음 = 상관관계가 없다고 판단 
  • cov(x, y) >  0 : 한 변수가 증가할 때 다른 변수도 증가하는 경향 = 양의 상관관계
  • cov(x, y) <  0 : 한 변수가 증가할 때 다른 변수는 감소하는 경향 = 음의 상관관계 
  • 한쪽이 높으면 한쪽이 낮으면 => 상관관계 가짐 = 음의 상관관계 

 

상관 분석 

두 변수가 선형적으로 얼마나 밀접하게 관련되어 있는지를 수치로 나타내기 위한 분석 방법

 

  • 목적
    → 두 변수 간 선형적 관계의 방향과 정도를 파악
  • 도구
    상관계수(Correlation Coefficient) 사용

 

선형적 관계를 보기 위해서 공분산을 보게 되는데

공분산은 값보다 부등호에 관심을 가진다 상관관계 

 

상관관계의 유형 (산점도 기준)

(1) 양의 상관관계

  • 한 변수가 증가하면 다른 변수도 증가
  • 산점도: 오른쪽 위 방향으로 증
  • 상관계수: r>0

(2) 음의 상관관계

  • 한 변수가 증가하면 다른 변수는 감소
  • 산점도: 오른쪽 아래 방향
  • 상관계수: r<0

(3) 무상관

  • 선형적 관계 없음
  • 산점도: 점들이 무작위로 분포
  • 상관계수: r≈0

 

피어슨 상관계수 

 

 

  • 연속형 변수 간의 선형 관계를 측정
  • 상관계수의 절댓값이 클수록 선형 관계가 강함
  • 비선형 관계는 측정 불가
  • 이상치(outlier)에 민감

 

스피어만 상관계수

 

  • 두 변수의 순위(Rank) 간 상관관계 측정
  • 서열 데이터 또는 비정규 데이터에 적합
  • 비선형이지만 단조(monotonic) 관계도 측정 가능
  • 이상치에 비교적 강함
  • 연속형이 아니어도 가능

 

상관계수 값해석

상관 관계 값 해석
±1 완전한 선형 상관
±0.7 이상 강한 상관
±0.3 ~ 0.7 중간 상관
0 ~ ±0.3 약한 상관
0 선형적 상관 없음

 

 

 

연속형인지, 이산형인지, 범주(명목)형인지 꼭 확인해보아야한다 

 

변수의미통계적 분류이유

변수 의미 통계적 분류 이유
mpg 연비 연속형 실수값, 측정값
cyl 실린더 수 이산형 4,6,8 개
disp 배기량 연속형 연속적인 용적
hp 마력 연속형 측정값
drat 후륜비 연속형 비율
wt 무게 연속형 실수
qsec 1/4마일 시간 연속형 시간
vs 엔진형태 (0/1) 범주형(명목) 코드값
am 변속기 (0=자동,1=수동) 범주형(명목) 숫자지만 의미 없음
gear 기어 수 이산형 개수
carb 카뷰레터 수 이산형 개수

 

 

공분산 = -320.73

  • 음수(–)이므로
    연비(mpg)가 증가할수록 마력(hp)은 감소하는 경향
  • 단, 공분산은 단위의 영향을 받기 때문에
    • 값의 크기 자체로 “강하다/약하다”를 판단하긴 어려움
    • 두 변수는 음의 관계를 가진다

 

피어슨 상관계수 r = -0.776

  • 범위: -1 ≤ r ≤ 1
  • 구간해석 
    구간 해석
    ±0.7 이상 강한 상관관계
    ±0.4 ~ 0.7 중간
    ±0.4 미만 약함
  • mpg와 hp의 상관계수는 -0.776으로 나타났으며, 이는 연비가 높을수록 마력이 낮아지는 강한 음의 선형 상관관계가 있음을 의미한다. 

cor.test()

일부 데이터(표본)로 계산한 상관관계를 모집단으로 일반화할 수 있는지 확인하는 함수 

즉,

  • 표본 상관계수 r = -0.776 이
  • 단순히 샘플 우연인지,
  • 아니면 모집단에서도 0이 아닌 상관관계가 있다고 말할 수 있는지

이걸 가설검정으로 확인하는 함수임 


 

 

cor.test(a, b, method = "pearson")

 

 

 

 

import pandas as pd
import matplotlib.pyplot as plt

realEstate = [83, 83, 83.5, 83.8, 83.9, 83.7, 84.3, 84.6, 85.2, 85.7, 85.7, 85.7, 86.3
               , 86.8, 87.4, 87.4, 87.4, 87.4, 87.6, 88.2, 88.8, 89.4, 89.7, 89.9, 90.5
               , 91.1, 92, 92.7, 93.3, 93.8, 94.7, 95.4, 96, 96.4, 96.4, 95.8, 95.7
               , 95.8, 95.7, 95.7, 95.7, 96, 96.6, 97.2, 98.1, 98.8, 98.9, 98.6, 98.3
               , 98.5, 98.7, 98.6, 98.9, 99.4, 100.1, 100.2, 100.3, 100.3, 100, 99.6
               , 99.8, 100.1, 100.2, 100.2, 99.9, 99.7, 99.6, 100.8, 102.2, 102.4
               , 101.6, 100.8, 100.3, 99.9, 99.2, 99, 98.8, 99.1, 99.6, 99.9, 100.3
               , 100.8, 101.7, 102.7, 103.4, 104.7, 105.5, 105.5, 106.3, 108.3, 110.7
               , 112, 112.9, 114.4, 117, 119.8, 122.9, 125.1, 126.7, 128.3, 130.5
               , 133.4, 136.5, 139.7, 142.3, 143.8, 143, 141.6, 140.7, 140.6, 141.1
               , 141.8, 140.5, 139.8, 136.1, 133.4, 130.6, 126.2, 121.1]
interestRate = [2.75, 2.75, 2.75, 2.75, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5
               , 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.25, 2.25, 2, 2, 2, 2, 2, 1.75, 1.75
               , 1.75, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.25
               , 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25
               , 1.25, 1.25, 1.25, 1.25, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5
               , 1.5, 1.5, 1.5, 1.75, 1.75, 1.75, 1.75, 1.75, 1.75, 1.75, 1.75, 1.5
               , 1.5, 1.5, 1.25, 1.25, 1.25, 1.25, 1.25, 0.75, 0.75, 0.5, 0.5, 0.5
               , 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5
               , 0.75, 0.75, 0.75, 1, 1, 1.25, 1.25, 1.25, 1.5, 1.75, 1.75, 2.25, 2.5, 2.5
               , 3, 3.25]
data = {'부동산' : realEstate,'금리' :interestRate }
df = pd.DataFrame(data)
coef = df.corr(method='pearson')
print(coef)

 

 

heatmap (히트맵)

: 상관관계를 표현하는 방법 

#상관계수를 그래프로 표현
#
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# 1. 상관계수 계산 (이미 하신 부분)
coef = df.corr(method='pearson')

import matplotlib.font_manager as fm
import warnings
# 1. 모든 경고 메시지 무시 (선택 사항)
warnings.filterwarnings('ignore')

# 2. 한글 폰트 설정 (Windows: 맑은 고딕)
# 만약 Mac이라면 'AppleGothic'으로 수정하세요.
font_name = "Malgun Gothic"
plt.rcParams['font.family'] = font_name

# 3. 유니코드 마이너스 깨짐 설정 (매우 중요)
plt.rcParams['axes.unicode_minus'] = False

# 2. 히트맵 시각화 설정
plt.figure(figsize=(10, 8))  # 그래프 크기 설정

# annot=True: 격자 안에 숫자 표시
# cmap='coolwarm': 낮은 값은 파란색, 높은 값은 빨간색으로 표시
# fmt=".2f": 소수점 둘째 자리까지 표시
sns.heatmap(coef, annot=True, cmap='coolwarm', fmt=".2f", linewidths=0.5)

plt.title('Correlation Heatmap of mtcars')
plt.show()

 

정답 3번 : 공분산으로는 강도를 판단할 수 없기 때문

 

정답 3번 : 상관분석은 인과관계를 산출하지 못하는 방법이다 .

 

 

추론통계학 

: 수집된 자료를 이용해 대상 집단(모집단)에 대한 의사결정을 하는 것으로, Sample(표본)을 통해 모집단을 추정하는 통계 기법  기술 통계를 활용한 추론이 이루어짐

모수추정 표본 집단으로 부터 모집단의 특성인 모수를 분석하여 모집단을 추론
- 모평균
- 모분산 σ² : 모집단 데이터가 평균 μ를 중심으로 얼마나 퍼져 있는지
- 모비율
가설 검정 대상 집단에 대해 특정한 가설을 설정한 후에 그 가설이 옳은지 그른지에 대한 채택여부를 결정하
예측 미래의 불확실성을 해결해 효율적인 의사결정을 하기 위해 활용한다.(예: 회귀분석, 시계열 분석등의 방법)

 

데이터에서 어떤 관계의 규칙성을 먼저 확인하고, 그 규칙이 존재한다고 판단되면 이를 바탕으로 모집단을 추정함

=>

  • 표본 데이터를 통해 관계의 규칙성을 탐색
  • 해당 관계가 통계적으로 유의하다고 판단되면
  • 이를 모형으로 가정하여 모집단을 추정

모수 추정 및 가설 검정

모집단 → 표본추출 → 표본 → 통계량 계산 → 표본분포 활용 → 추론 → 모수 추정

 

 

 

정규분포

모집단이라면 이런 규칙이 있다고 봄 -> 이걸로 모수 추정 할 수 있겠다 ! 

범위 의미 비율
평균 ± 1σ 1편차 범위 68%
평균 ± 2σ 2편차 범위 95%
평균 ± 3σ 3편차 범위 99.7%

 

 

문제 ) 평균 = 80점 / 표준편차 = 5점 일 때 확인해보기 ~ 

① 1편차 범위 (±1σ) : 80±5
      -> 75점 ~ 85점

      -> 전체의 약 68%

 

② 2편차 범위 (±2σ) : 80±10
    -> 70점 ~ 90점
    -> 전체의 약 95%

 

③ 3편차 범위 (±3σ) : 80±15

     -> 65점 ~ 95점
     -> 전체의 99.7%

 

표본 확률분포 

 

  • 표본에서 계산한 통계량(예: 표본평균, 표본비율)이
  • 확률적으로 어떻게 변하는지를 나타낸 분포
  • 개별 데이터의 분포 X
  • 통계량의 분포 O

표본 평균은 중심 극한 정리(CLT) 분포를 따른다 

 

중심 극한 정리 (표본확률분포도)

  • 모집단의 분포가 무엇이든 상관없이
  • (모집단이 정규 분포를 가지든, 아니든)
  • 모집단의 평균 , 표준편차 가 존재하고
  • 표본 크기 n이 충분히 크면
  • => 표본평균의 분포(드러내는 확률)정규분포에 근사

 


표준화(정규화)

 

  • 표본평균(x-)을
  • 표준정규분포 N(0,1)로 변환

 

 

표본평균의 평균 = 모평균이 가장 많이 나온다 = 뮤랑 비슷한 패턴으로 나온다 

 

1. 왼쪽 큰 그림: 모집단 분포 (μ = 0)

  • 왼쪽의 큰 곡선: 모집단의 확률분포
  • 가운데 표시: μ = 0
  • 위에 적힌 것: σ² = 1 (모분산 1, 표준편차 σ = 1)
  •  즉, : 𝑋∼𝑁(0,1)
  • 개별 관측값 𝑋들은 0을 중심으로 흩어져 있음
  • 이 단계에서는 “개별 점수(데이터)”를 다룸

 

2. 가운데 작은 점들: 표본 추출 (Sample)

  • 모집단에서 여러 개의 표본을 뽑음
  • 그림 속 작은 동그라미와 점들 = 표본 데이터들
  • 이 표본 하나하나는 여전히 분산이 큼
    → 값이 들쭉날쭉함

 

3. 오른쪽 위: 표본 1 → 표본평균 𝑋ˉ1

그림에 적힌 예:

 

  • 표본 값들: 2.4, 2.8, 2.52 (같은 느낌의 숫자들)
  • 이들의 평균:


표본평균은

  • 개별 값보다 훨씬 안정적
  • 여전히 랜덤하지만 μ = 0 근처

4. 오른쪽 중간: 다른 표본 → 𝑋ˉ2

다른 표본을 뽑았더니 값들이 0.6, 0, 0 …

평균:


표본이 달라지면 표본평균도 달라짐
하지만, 대부분의  Xˉ  는 0 근처에 몰림

 

 

5. 아래 큰 파란 영역: 표본평균들의 분포

  • 표본을 여러 번 반복 추출
  • 매번 𝑋ˉ 를 계산
  • 그 𝑋ˉ 들을 모아 만든 분포
    => 표본평균의 분포

 

① 𝑋ˉ(엑스바): 표본평균
표본 데이터에서 계산한 평균값

② 𝜇(뮤) : 모평균
모집단 전체의 평균 (알 수 없는 값)

③ 𝜎 (시그마): 모집단의 표준편차
모집단 데이터의 퍼짐 정도

④ 𝑛 : 표본의 크기
표본에 포함된 관측값의 개수

⑤ 𝑍 : 표준화된 통계량 (Z-값)
표본평균이 모평균에서 몇 표준오차만큼 떨어져 있는지

  • 평균을 낼수록 변동성이 줄어드는 정도
  • 평균: 여전히 0
  • 분산: 𝜎^2/𝑛→ 훨씬 작아짐
  • 그래서 분포가 좁고 뾰족

 

 

모집단과 포본평균 비교

구분 대상 분포
모집단 분포 개별 관측값 X 아무 분포 가능
표본평균 분포 (\bar{X}) (CLT에 의해) 정규분포

 

  • 중심극한정리에 의해 표본 크기가 충분히 크면 표본평균은 정규분포를 따르며,
  • 이 표본평균의 확률분포는 연속형이므로 확률은 밀도함수 아래의 면적으로 정의됨
  • 이를 통해 적분 또는 표준화를 이용한 확률 계산이 가능
  • 이 확률분포를 기반으로 모집단의 모수를 추론

 

연속형 확률변수 → 밀도함수

  • 𝑋ˉ는 연속형
  • 따라서 확률질량함수(PMF) ❌
  • 확률밀도함수(PDF) ⭕

    중요한 성질
  • 특정 값의 확률 = 0
  • 확률은 구간에 대해 정의됨


확률은 “면적”이다

연속형 확률변수에서:

  • 확률 = 곡선 아래 면적
  • 적분을 통해 계산


 

 

가설 검증 

: 표본 데이터를 이용해, 모집단에 대해 세운 주장(가설)이 통계적으로 타당한지 판단하는 절차

μ = 모집단의 평균=0 = 가설 검정의 기준 값 -> 표본 데이터 검정 

 

유의수준 설정 (보통 .. α=0.05 (5%))
: 귀무가설이 참인데도 기각할 확률 허용 한계

 

  • 중심극한정리에 의해 표본평균의 분포를 가정할 수 있고,
  • 이를 바탕으로 통계적 검정을 수행한 결과가 유의수준을 만족하면,
  • 해당 표본은 주어진 모집단에서 추출되었다고 볼 수 있음
  • => 유의수준을 만족하는 경우, 해당 표본은 주어진 모집단에서 추출되었다고 판단할 수 있음