본문 바로가기

컴퓨터/디지털 하나로

확증적 데이터 분석

데이터 간 연관성, 상관성, 유사성 등에 대한 가설을 수립하고 통계적 검정 기법을 이용해 객관적인 수치로 검증하는 과정이다.

통계적 가설 검정은 확률 분포를 기반으로 수행된다.

 

 

확률 분포란?
확률 변수가 가질 수 있는 값들과 그 값이 나타날 확률을 나타낸 것으로 데이터가 따르는 분포에 따라 적절한 가설 검정 기법이 달라지기 때문에 확률 분포를 파악해야한다. 

 

계량형 확률 분포 -> 숫자 / 연속형 데이터에 사용

분포 종류 설명 주요 용도
정규 분포 (Normal Distribution) 평균 주변에 데이터가 밀집된, 좌우 대칭의 종 모양 분포 자연 데이터 근사, 모집단 추정
표준 정규 분포 (Standard Normal Distribution) 평균 0, 표준편차 1로 정규화를 수행한 정규 분포 Z-score 계산, 스케일링
T 분포 (T Distribution) 정규분포와 유사하나 표본 수가 적을 때 꼬리가 두꺼운 분포 소표본 평균 추정 및 검정 (t-test)
카이제곱 분포 (Chi² Distribution) 표본 분산들의 분포 분산 추정, 적합도 검정, 독립성 검정 (카이제곱 검정)
F 분포 (F Distribution) 두 표본 분산의 비율을 확률 분포화 두 모집단 분산 비교 (ANOVA, F-test)
와이블 분포 (Weibull Distribution) 다양한 형태를 표현 가능한 신뢰성 분석용 분포 부품 수명 추정, 금융 리스크 예측

- 중심 극한 정리: 무작위로 추출된 표본의 수가 충분히 크다면, 평균의 분포는 모집단의 분포 모양과는 관계없이 정규분포에 가까워진다.

계수형 확률 분포

계수형(이산형) 데이터는 개수처럼 정수 값을 가지는 데이터를 뜻한다.

계수형 확률 분포는 확률질량함수를 사용해 계산한다.

 

이항 분포 (Binomial Distribution)

각 시행이 성공 또는 실패, 두 가지 결과만 가능하고, n번의 독립 시행에서 성공한 횟수를 모델링한다.

시행이 서로 독립적이고, 성공 확률 p가 시행마다 일정하다.

 

확률질량함수

\begin{equation*}
P(X = k) = \binom{n}{k} p^{k} (1-p)^{n-k}
\end{equation*}

 

: 총 시행 횟수

: 성공한 횟수

: 성공 확률

 

# 해약율이 15%일 때, 3명의 고객을 임의로 선택했을 때 해약 고객 수별 확률은?

import scipy.stats as stats

for i in range(4):
    prob = stats.binom.pmf(k=i, n=3, p=0.15)
    print(i, prob.round(3))


포아송 분포 (Poisson Distribution)

단위 시간이나 단위 면적 내에 희귀하게 발생하는 사건 수를 모델링하는 것으로 사건이 독립적으로 발생하고, 사건 발생률이 일정하다.

 

확률질량함수

 

λ : 단위 시간/공간당 평균 발생 건수

k : 사건 발생 횟수

 

# 하루 평균 5회의 스마트뱅크 VOC 발생, 2일 동안 VOC가 발생하지 않을 확률은?

voc_days = 5  # 하루 평균 VOC 발생 수
time1 = 2     # 기간
new_voc = 0   # VOC가 발생하지 않을 확률

# 이틀 동안 발생 기대횟수
stats.poisson.pmf(new_voc, mu=voc_days * time1)
 

 

추론 통계

- 기술 통계(Descriptive Statistics)

수집된 데이터로부터 평균, 분산 등 요약 통계량을 계산하여 데이터의 직접적 특성을 파악하는 방법으로 데이터 집합 그 자체에 대한 요약을 제공한다. 

 

 - 추론 통계(Inferential Statistics)

제한된 표본의 정보를 바탕으로 전체 모집단의 특성을 추정하거나 예측하는 방법으로 불확실성을 수반하며, 확률적 접근을 통해 결론 도출한다.

 

통계적 추정: 평균이나 분산과 같은 표본 통계량을 기반으로, 모집단 모수를 추정

가설 검정: 모집단의 모수에 대해 특정 가설을 세우고, 표본 데이터를 통해 가설의 참/거짓 여부를 검증

모수: 모집단의 특성을 요약하는 값 (ex. 모집단 평균, 모집단 분산)

통계량: 표본 데이터를 요약하는 값 (ex. 표본 평균, 표본 분산)

 

표본과 모집단은 다르다 → 표본에서 계산한 통계량이 모집단 모수를 정확히 반영하지 않을 수 있으며, 항상 오차가 존재한다.

 

신뢰 수준: 여러 번 표본을 추출해 구간을 만들었을 때, 모수(참값)가 해당 구간에 포함될 확률로 일반적으로 90%, 95%, 99% 수준 사용한다.

유의 수준: 귀무가설을 잘못 기각할 확률로 일반적으로 α = 0.05 를 사용한다.

통계적 가설 검정

어떤 주장이 모집단에 대해 참인지 거짓인지를, 표본 데이터를 통해 객관적인 수치(P-value)를 근거로 판별하는 과정

 

가설의 종류

귀무가설(H₀): 기존 주장으로 변화가 없음을 설명하는 가설로 검정 과정에서는 기각 대상이다.
예시: 집단 간 평균은 같다, 두 변수 간 상관관계는 없다, 데이터는 정규분포를 따른다.
 
대립가설(H₁): 새로운 주장을 통해 변화가 있음을 설명하는 가설로 채택을 목적으로 수립한다.

예시: 집단 간 평균은 다르다, 두 변수 간 상관관계가 있다, 데이터는 정규분포를 따르지 않는다.

 

P-value란?

귀무가설이 참이라고 가정했을 때 표본에서 관찰된 결과가 나타날 확률

P-value가 작을수록 귀무가설이 사실일 가능성은 낮다.

 

P-value < 유의수준(α) → 귀무가설 기각, 대립가설 채택

P-value > 유의수준(α) → 귀무가설 채택 (기각 실패)

유의수준(α): 가설 검정의 판단 기준으로, 보통 0.05를 사용한다.

 

가설 검정의 위험

1종 오류(α-risk): 실제로는 귀무가설이 참인데 잘못 기각 정상 제품을 불량으로 판정 (생산자 위험)

2종 오류(β-risk): 실제로는 대립가설이 참인데 귀무가설을 채택 불량 제품을 정상으로 판정 (소비자 위험)

 

검정력

대립가설이 참일 때, 대립가설을 올바르게 채택할 확률

검정력이 높으면 실제로 차이가 있을 때 그것을 잘 발견할 수 있기 때문에 실질적인 오류 가능성인 2종 오류가 줄어든다.

따라서 보통 검정력은 80% 이상을 목표로 설정한다.

단일 변수 검정

1. 정규성 검정

연속형 데이터가 정규분포를 따르는지 여부를 검정

 

H₀ (귀무가설): 해당 데이터는 정규분포를 따른다.

H₁ (대립가설): 해당 데이터는 정규분포를 따르지 않는다.

import scipy.stats as stats

stats.normaltest(df1['col'])

 

 

P.value < 0.05 이면 대립가설 참

통계적 결론 : 귀무가설기각
사실적 결론 : 해당 데이터의 분포는 정규성을 따르지 않는다. 

 

2. 1표본 평균 검정

정규분포를 따르는 표본 데이터의 하나의 표본의 평균이 특정 값과 통계적으로 같은지 여부를 검정

H₀ (귀무가설): 표본 평균 = 기준 값

H₁ (대립가설): 표본 평균 ≠ 기준 값

stats.ttest_1samp(df1['col'], 100000)

 

다변수 검정

1. X: 범주형 / Y: 연속형

 

집단 간 평균/중앙값 차이 비교

 

 

1-1. 집단이 2개일 때

 

1-1-1. 등분산 검정(정규성을 만족할 때)

H₀ (귀무가설): 두 집단의 분산은 서로 같다고 볼 수 있다 

H₁ (대립가설):  두 집단의 분산은 서로 다르다고 볼 수 있다 

stats.bartlett(df1['col1'], df1['col2'])

 

T-검정

H₀ (귀무가설): 그룹 간 평균 차이가 없다

H₁ (대립가설): 그룹 간 평균 차이가 있다.

# T-검정(정규성을 만족하고 등분산성을 만족할 때)
stats.ttest_ind(df1['col1'], df1['col2'], equal_var=True)

# T-검정(정규성을 만족하고 분산이 다를 때)
stats.ttest_ind(df1['col1'], df1['col2'], equal_var=False)

 

1-1-2. 등분산 검정(정규성을 만족하지 않을 때)

H₀ (귀무가설): 두 집단의 연속형 자료의 중앙값이 같다고 볼 수 있다 .
H₁ (대립가설): 두 집단의 연속형 자료의 중앙값이 다르다 볼 수 있다 .

stats.ranksums(df1['col1'], df1['col2'])

 

1-2. 집단이 3개 이상일 때

 

H₀ (귀무가설): 모든 집단간의 평균 간 유의한 차이가 없다.

H₁ (대립가설): 최소 하나의 집단의 평균이 다르다.

 

# 정규분포를 따르고 분산이 모두 같은 세 집단의 연속형 자료의 평균이 같은지 검정 (ANOVA 검정) 
stats.f_oneway(df1['col1'], df1['col2'], df1['col3'])

# 정규분포를 따르지 않거나, 정규분포 이지만 분산이 서로 다른 3집단 이상을 비교 
stats.kruskal(df1['col1'], df1['col2'], df1['col3'])

 

 

2. X: 연속형 / Y: 연속형

 

두 연속형 변수 간 상관관계 확인

 

 

H₀ (귀무가설): 두 연속형 자료는 서로 상관성이 없다. 
H₁ (대립가설): 두 연속형 자료는 서로 상관성이 있다.

# 두 변수 모두 정규분포를 따른다.
stats.pearsonr(df1['col1'], df1['col2'])

# 두 변수중 하나라도 정규분포를 따르지 않는다.
stats.spearmanrdf1['col1'], df1['col2'])

 

statistic > 0 → 비례 관계

statistic < 0 → 반비례 관계

 

3. X: 범주형 / Y: 범주형

 

두 범주형 변수 간 독립성/연관성 확인

 

 

H₀ (귀무가설): X에 대해서 Y는 독립이다. 
H₁ (대립가설): X에 대해서 Y는 독립이 아니다. 

p1 = pd.crosstab(df1['X'], df1['Y'])
stats.chi2_contingency(p1)

 

P < 0.05 → 두 변수는 연관 있다.

P > 0.05 → 두 변수는 독립적이다.

 

단, 상관성 검정과 독립성 검정의 경우 서로 연관이 있는지, 독립인지를 알 수 있을 뿐 인과관계를 알 수는 없다.

 

인과 추론

변수 간의 단순한 상관관계를 넘어서 원인이 결과에 영향을 주었는지 추론하는 분석하는 방법이다.

 

무작위 대조 실험: 실험군과 대조군을 무작위 할당 후 결과 비교하는 것으로 인과성 입증에 가장 강력하지만, 비용, 시간, 윤리적 문제가 있다.
관측 데이터 기반 인과추론: 기존 데이터를 사용해 모델링하는 것으로 실무에서 현실적이지만 교란변수 등 통제가 어렵다.

 

import dowhy 

# 인과 추론 모델을 구성 
model = CausalModel(df1, treatment, outcome, common_causes)

# treatment: 원인변수 설정
# outcome: 결과변수 설정 
# common_causes: 혼란변수 (두 변수에 모두 영향을 줄 수 있는 변수)

# 도출된 인과 추론 모델을 모형화하여 원인변수가 얼만큼 바뀔때 결과변수가 얼만큼 변하는지 계산 
est = model.estimate_effect(model_result, method_name='backdoor.linear_regression')
est.value # 변화 값
est.get_confidence_intervals() # 인과분석 결과의 신뢰구간

RFM 분석

RFM 분석은 고객을 Recency(최근성), Frequency(빈도), Monetary(금액) 기준으로 평가하여 고객의 가치를 정량적으로 분류하고, 마케팅 타겟팅을 효율적으로 수행하는 데 활용

 

Recency: 가장 최근 구매가 얼마나 오래되었는가?

Frequency: 고객이 얼마나 자주 구매했는가?

Monetary: 고객이 얼마나 많은 금액을 지불했는가?

 

RFM 통합 및 점수화

R, F, M를 각각 병합 한 뒤 각각의 수치에 대해서 중요도를 사용자가 정하여 점수화를 진행한다.

그리고 각 고객 별 RFM점수를 등급화 해서 고객을 분류 할 수 있다.

 

 

'컴퓨터 > 디지털 하나로' 카테고리의 다른 글

예측적 데이터 분석  (3) 2025.05.05
탐색적 데이터 분석(EDA)  (0) 2025.04.27
기술적 데이터 분석  (3) 2025.04.26
데이터 분석 기초 통계  (0) 2025.03.25