일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 파이썬 철저입문
- 미세먼지
- 파이썬 철저 입문
- 내일배움캠프
- 프로그래머스
- 파이썬 머신러닝 완벽 가이드
- 스파르타
- 프로젝트
- 회귀분석
- 파이썬 완벽 가이드
- 텍스트 분석
- 오블완
- 내일배움
- wil
- 내일배움카드
- 실전 데이터 분석 프로젝트
- SQL
- TiL
- 스파르타코딩
- 티스토리챌린지
- MySQL
- 웹 스크랩핑
- 스파르타 코딩
- 중회귀모형
- Cluster
- R
- harkerrank
- 파이썬 머신러닝 완벽가이드
- 파이썬
- hackerrank
- Today
- Total
OkBublewrap
[통계 101 x 데이터 분석] 통계 모형화 본문
선형회귀는 다양한 해석 방법의 기초
실제 데이터 해석에서는 설명변수가 여러 개인 경우나, 반응변수가 양적 변수가 아니라 예/아니요 같은 범주형 변수일 때도 있기에, 회귀모형이 항상 적절하지는 않습니다.
확장방향성
- 설명변수의 개수를 늘리거나 유형 변경
- 개수 늘리기
- 유형 변경(양적 변수, 범주형 변수) - 반응변수의 유형 변경하기
- 오차분포(등분산의 정규분포, 이항분포 -> 2개의 범주형 변수, 푸아송 분포 -> 음이 아닌 정수
- 일반화선형모형(GLM) - 회귀모형의 형태 변경하기
- 상호작용
- 비선형
- 일반화선형혼합모형(GLMM)
다중회귀
설명변수가 여러 개인 것을 다중회귀라 합니다.
$$ y = a + b_{1} * x_{1} + b_{2} * x_{2} + \varepsilon $$
$ b_{1}. b_{2} $ 은 편회귀계수라 부른다.
X1 coef(편회귀계수) : 0.4022
X2 coef(편회귀계수) : 0.8881
const (절편) : 9.3244
F통계량 : 199.8 회귀모형의 유의성 검정
👉 주목해야 할 점은 추정된 편회귀계수와 그 유의성이다.
1. 편회귀계수 (Partial Regression Coefficient)
변수회귀계수 (coef) 의미
x1 (키) | 0.4022 | 키가 1cm 증가할 때, 몸무게가 평균적으로 0.4022kg 증가 |
x2 (허리둘레) | 0.8881 | 허리둘레가 1cm 증가할 때, 몸무게가 평균적으로 0.8881kg 증가 |
즉, 허리둘레가 몸무게에 미치는 영향이 키보다 2배 이상 큼을 알 수 있습니다.
2. 유의성 검토 (P-value 분석)
키가 몸무게에 통계적으로 유의한 영향을 미침, 허리둘레도 몸무게에 통계적으로 유의한 영향을 미침
p-value 기준
- p < 0.05 → 변수는 통계적으로 유의미함 ✅
- p ≥ 0.05 → 변수가 종속변수(y)와 의미 있는 관계가 없음 ❌
👉 두 변수(x1, x2)의 p-value가 0.000이므로, 키와 허리둘레 모두 몸무게 예측에 유의미한 변수임을 확인할 수 있습니다
편회귀계수
표준화편회귀계수
회귀분석에서 구한 편회귀계수는 설명변수의 데이터 퍼짐 정도나 단위에 따라 크게 달라지기 때문에 편회귀계수끼리 비교할 수 없습니다. 그렇기 때문에 회귀분석을 시행하기 전에 각각의 설명변수를 평균 0, 표준편차 1로 변환한 다음 비교
편회귀계수에 상관계수가 1에 가까운 강한 상관이 있을 때는, 뒤에 설명할 다중공선성이 있는지를 의심하고 이에 대처해야 합니다.
범주형 변수를 설명변수로
데이터 분석 현장에서는 예/아니요, 실험군/대조군, 혈액형 A/B/O/AB 등, 설명변수를 범주로 나타낸 데이터를 접할 때가 있습니다. 범주에는 대소 관계가 없으므로, 회귀분석의 설명변수로 이용할 때는 0 또는 1과 같은 가변수를 설명변수로 이용하는 등의 요령이 필요합니다.
범주가 3개 이상일 때
다음으로, 범주가 3개 이상일 때, 예를 들어 범주가 4개인 혈액형 A, B, O, AB을 가지고 있을 때
0, 1, 2, 3이란 식의 4개의 숫자를 할당할 수 없다.
혈액형 범주에는 대소 관계가 없으며, x=0, 1, 2, 3의 선형 증가에 대응하지 않기 때문이다.
설명변수를 범주 개수가 아닌 (범주 개수-1)로 한 것은, 다중공선성을 피하기 위해서입니다.
2개 범주일 때와 마찬가지로 어떤 범주를 어떤 가변수 조합에 할당할 것인지는 자유인, 결과를 해석할 때는 범주와 가변수의 대응 관계를 확인하도록 합시다.
공분산분석
일반적인 분산분석에 사용하는 데이터와 함께 양적 변수 데이터가 있는 경우에 후보가 되는 방법
이 새로 추가한 양적 변수를 공변량이라 합니다.
- 독립변수 (범주형) : 비교할 집단
- 종속변수 (연속형) : 분석할 결과 변수
- 공변량 : 종속변수에 영향을 줄 수 있는 연속형 변수
분산분석(ANOVA) : 집단 간 평균 차이를 비교
공분산분석(ANCOVA) : 집단 간 평균 차이를 비교 + 공변량 영향 제거
분석 과정
- 공변량과 종속변수는 선형 관계를 가져야 함
- 공변량이 독립변수와 독립적이어야 함
- 공변량과 독립변수 간 상호작용이 없어야 함
- 잔차가 정규성을 따라야 함
고차원 데이터 문제
차원이 늘어날수록 파라미터 추정에 필요한 데이터 양이 폭발적으로 증가한다는 문제가 발생한다.
이를 차원의 저주라 한다.
차원이 증가할수록 다음에 설명할 다중공선성 문제가 일어나기 쉬우므로, 모형의 추정 정밀도 떨어진다.
다중공선성
설명변수가 여러 개인 다중회귀에서 설명변수 사이에 강한 상관이 있는 경우, 다중공선성이 있다고 말한다.
다중공선성 측정
다중공선성 정도를 측정하라면, 먼저 분산팽창인수를 계산합니다. VIF 값은 각 설명변수마다 산출됩니다. VIF를 구하려면 하나의 설명변수 $ x_{i} $를 반응변수로 설정하고, 나머지 설명변수를 이용하여 회귀를 시행한 뒤, 그 결정계수 $ R_{i}^2 $를 이용하며 다음과 같이 계산
$$ VIF(x_i) = \frac{1}{1 - R_{i}^2} $$
VIF > 10이라면, 2개 사이의 상관이 아주 강한 것이다.
⚠️ 다중공선성이 강하다고 판단했을 때는, 서로 상관이 있는 2개 변수 중 하나를 없애거나, 주성분분석 등의 차원 축소 방법을 이용하여 설명변수의 개수를 줄이는 것이 좋습니다.
다중공선성의 주된 문제는 추정한 회귀계수를 해석하기 어렵다는 데 있습니다. 그런 까닭에 예측이 목적인 회귀라면, 가능한 한 예측이 좋은 모형을 얻는 것이 우선이기 때문에 회귀계수가 무엇이든 상관이 없으며, 다중공선성 또한 문제 되지 않을 때도 흔하다고 합니다.
회귀모형의 형태 바꾸기
현실 데이터에서는 x가 1 증가했을 때의 y 증가 방식이, 또 다른 설명변수의 영향을 받을 수도 있습니다. 이러한 설명변수 간의 상승효과를 상호작용이라 하며, 선형회귀모형안에서 곱셈 $ cx_{i}x_{j} $ f로 도입할 수 있습니다.
- 상호작용을 넣으면 해석이 어려워진다.
- 설명변수의 개수가 늘면 상호작용항의 수가 폭발적으로 늘어난다.
- 상호작용의 형태는 다양한데도 곱셈으로만 나타낸다.
- 설명변수와 상호작용항의 다중공선성 문제가 있다.
그러므로 다음과 같을 때에 한해 적용하는 것이 좋습니다.
- 상호작용이 있다는 것이 선행 연구에서 밝혀지거나 기대되는 때
- 데이터에 분명한 상호작용이 있을 때
- 상호작용 유무에 관심이 있을 때
이원배치 분산분석
앞서 하나의 요인만 다루는 집단 간 평균을 비교하는 분산분석은 일원배치 분산 분석이라 한다.
여러 개의 요인을 동시에 고려할 수 있는데, 이를 다원배치 분산분석이라 한다.
import pandas as pd
import statsmodels.api as sm
import statsmodels.formula.api as smf
# 가상의 데이터 생성
data = pd.DataFrame({
'Score': [78, 85, 82, 90, 88, 92, 84, 95],
'Method': ['전통식', '전통식', '전통식', '전통식', '혁신식', '혁신식', '혁신식', '혁신식'],
'Gender': ['남학생', '여학생', '남학생', '여학생', '남학생', '여학생', '남학생', '여학생']
})
# OLS 모델 적합 (Score ~ Method + Gender + Method:Gender)
model = smf.ols('Score ~ C(Method) * C(Gender)', data=data).fit()
# ANOVA 테이블 출력 (Type II Sum of Squares 사용)
anova_table = sm.stats.anova_lm(model, typ=2)
print(anova_table)
- C(Method) : 교육 방법의 주효과 (main effect)
- C(Gender) : 성별의 주효과 (main effect)
- C(Method) : C(Gender) : 두 요인 간 상호작용 효과
- Residual : 잔차(오차) 항
해석
- 주효과
만약 C(Method) 또는 C(Gender)의 p-value가 0.05보다 작다면 해당 요인이 학생의 성적에 유의미한 영향을 미친다고 해석할 수 있습니다. - 상호작용 효과
C(Method) : C(Gender)의 p-value를 통해 교육 방법과 성별이 경합하여 성적에 미치는 효과를 확인
p-value가 0.05 이상이라면 상호작용 효과는 통계적으로 유의하지 않다고 판단할 수 있습니다.
# 수정된 pointplot 코드
sns.pointplot(x='Method', y='Score', hue='Gender', data=data,
dodge=True, markers=['o', 's'], capsize=0.1, err_kws={'linewidth': 1}, palette='colorblind')
plt.xlabel('교육 방법')
plt.ylabel('수학 성적')
plt.title('교육 방법과 성별의 상호작용 효과 (point plot)')
plt.show()
두 그룹 모두 남학생과 여학생 간의 평균 차이가 동일하게 7.5으로 나타나고
즉, 교육 방법에 따른 변화가 성별에 따라 달라지지 않고, 상호작용효과는 없다고 해석
따라서 이 예시 데이터에서는 각 요인의 주효과는 있을 수 있으나,
두 요인이 결합되어 나타나는 상호작용 효과는 관찰되지 않는다.
비선형회귀
$$ y = a + bx + cx^2 $$
x에 관해서 비선형인 모형을 데이터에 적용할 수는 있으나 주의가 필요하다. 그 계수의 해석이 어려워지기 때문에, 무턱대고 복잡한 모형을 채택하는 것은 통상 바람직하지 않다.
그러므로 결과해석(회귀계수 해석)을 중시하는 일반적인 통계학 기준이라면, 1차 함수의 회귀모형(+필요하다면 상호작용)을 이용하는 것이 보통이다.
어느 모형이 적절한가, 애당초 적절이란 말은 어떤 관점에서 본 적절함인가 생각해 보자
일반화선형모형의 개념
선형회귀 원리 확장하기
일반화선형모형 : 일반선형모형 원리를 확장하여 최소제곱법이 아닌 확률분포에 기반한 최대가능도 방법(최대우도법)으로 회귀모형을 추정
데이터 성질을 고려하면서 확률 모형을 가정하고(베이즈 추정이라면 사전분포도 설정하고), 파라미터를 추정하여 모형을 평가하는 일련의 작업을 가리켜 통계 모형화라 부릅니다.
선형회귀가 적절하지 않은 상황
가능도와 최대가능도 방법
최소제곱법에서는 회귀모형과 데이터 간 차이의 제곱을 계산하여 최솟값이 되는 파라미터를 구했다.
선형회귀가 적절하지 않는 상황은 거리를 이용하여 모형과 데이터의 적합도를 측정하기보다는, 데이터가 확률적으로 생성되었다고 간주, 확률적으로 얼마나 나타나기 쉬운가에 기반해 데이터에 잘 들어맞는지 평가하는 편이 좋을 듯합니다.
최대우도추정법
최대우도추정법 (Maximum Likelihood Estimation) 오차항은 정규분포를 따른다고 가정한다. www.youtube.com/watch?v=AXGhnbYqJdM 위에 내용을 들으시면 이해가 더 쉽다.
okbublewrap.tistory.com
가능도가 크다는 것은 그 세타에서 얻은 데이터가 나타나기 쉽다는 것을 뜻합니다.
가능도를 최대화하는 세타를 찾아서 이를 추정값으로 삼으면 얻은 데이터에 가장 잘 들어맞는 파라미터 세타를 정할 수 있습니다.
이 방법을 최대가능도 방법 또는 최대가능도 추정이라 합니다.
로지스틱 회귀
일반화선형모형의 일종인 로지스틱 회귀를 소개
반응변수가 값이 2개인 범주형 변수일 때 사용하는 회귀. 범주 하나가 일어날 확률을 p(다른 하나가 일어날 확률은 1-p)로 두고, 설명변수 x가 바뀌었을 때 p가 얼마나 달라지는지를 조사합니다.
로지스틱 회귀 모델 정의
로지스틱 회귀는 반응변수가 범주형(특히 이진형, 0 또는 1)인 경우에 적합한 회귀 모델입니다. 선형회귀와 달리 출력값이 확률의 형태(0과 1 사이 값)가 되도록 변환하는 특성이 있습니다.
이항분포
$$ P(X = k) = \binom{n}{k} p^k (1 - p)^{n - k}, \quad k = 0, 1, 2, \dots, n $$
오즈비
이항분포 개념에서 오즈비는 실패확률 대비 성공확률
$$ odds\,ratio = \frac{P}{1-P} $$
- P의 확률 값은 0, 1 사이 값인데, P가 증가할수록 오즈비가 급격하기 증가하기에 너무 확률이 급격하고 선형성을 따르지 않게 된다. 그러므로 로그를 씌움
로짓 그래프의 역함수로 로지스틱 함수로 사용
딥러닝에서 시그모이드 함수 중 하나로 활용
푸아송 회귀
데이터가 음수가 되지 않는 정수일 때, 특히 반응변수가 개수인 경우 고려해 볼 수 있는 일반화선형모형
푸아송 분포 : 낮은 확률로 일어나는 무작위 사건에 대해, 평균이 $ \lambda $번 일 때 몇 번 일어나는지를 나타내는 확률분포입니다.
푸아송 회귀는 반응변수가 푸아송 분포를 따른다고 가정합니다.
푸아송 분포의 확률 질량 함수(PMF)는 다음과 같습니다.
$$ P(Y = k) = \frac{\lambda^k e^{-\lambda}}{k!} $$
여기서:
- Y : 발생 횟수 (Count)
- λ : 평균 발생 횟수 (모델이 예측할 값)
- : 자연로그의 밑
- k!=: k의 계승 (Factorial)
다양한 일반화선형모형
확률분포 | 반응변수 | 연결함수 | 특징 |
이항분포 | 0 이상 정수 | logit | 0 또한 상한이 있는 개수 데이터 |
푸아송 분포 | 0 이상 정수 | log | 상한이 없는 개수 데이터 평균=분산 |
음이항 분포 | 0 이상 정수 | log/inverse | 상한이 없는 개수 데이터 평균<분산 |
정규분포 | 실수 | 미사용 | 범위에 제한 없음, 분산은 일정 |
감마분포 | 0 이상 정수 | log/inverse | 분산이 변화 |
과분산
로지스틱 회귀나 푸아송 회귀에서 이용한 이용한 이항분포나 푸아송 분포에서는 분포의 평균과 분산 사이에 관계가 있다.
현실 데이터에는 이렇게 분포에서 규정된 평균과 분산의 관계보다도 분산이 큰 경우가 있다.
그대로 로지스틱 회귀나 푸아송 회귀를 사용하면 가설검정을 실행할 때 제1종 오류가 일어나기 쉬운 경향이 있다.
푸아송 회귀에서 문제가 될때는 분산>평균인 음이항 분포를 이용한 음이항 회귀로 대처하면 된다.
오차의 확률분포와 상관없이 일반적으로 사용하는 방법으로는 개체차나 장소차 등의 데이터를 이용한 일반화선형혼합모형이 있다.
일반화선형혼합모형
반응변수가 범주형(이진, 다항) 또는 정수형
데이터에 군집 구조나 계층적 구조가 존재
랜덤 효과를 고려하여 개별 차이를 반영하고 싶음
- 일반화선형혼합모형은 선형모델와 혼합 효과 모델을 결합한 확장된 모델
- 랜덤 효과를 추가하여 군집 구조 데이터를 더 잘 설명할 수 있음
- 이진 데이터(로지스틱 GLMM), 카운트 데이터(푸아송 GLMM) 등 다양한 경우에 적용 가능
- 의료, 생물학, 사회과학 등 군집 구조가 있는 데이터에서 필수적인 모델
통계 모형의 평가와 비교
왈드 검정
일반적인 선형회귀모형과 마찬가지로 일반화선형모형에서도 추정한 회귀계수를 대상으로
귀무가설 : 회귀계수 = 0, 대립가설 : 회귀계수 != 0으로 가설검정을 할 수 있다.
추정값의 데이터 퍼짐을 나타내는 표준오차를 이요앟여, 최대가능도 방법으로 얻은 추정값/표준오차를 왈드 통계량이라 합니다.
최대가능도 추정량이 정규분포를 따른다고 가정하면, 왈드 통계량을 이용하여 신뢰구간이나 p값을 얻을 수 있다.
가능도비 검정
가능도비는 두 개의 모형을 비교하여 어느 모형이 데이터를 더 잘 설명하는지 평가하는 통계적 방법
비교할 2개의 모형 중 어느 한쪽이 다른 한쪽을 포함하는 관계(내포되어 있다고 합니다)여야 합니다.
모형 1 : y = a, 모형 2 : y = bx + a가 있을 때 모형 2은 모형 1을 내포한다고 한다.
$$ D = -2 \log \lambda = -2 \left( \log L(M_{0}) - \log L(M_{1}) \right) $$
검정 과정:
- 귀무가설(M0)과 대립가설(M1)을 설정
- 각각의 가능도 L(M0), L(M1) 계산
- 가능도비 검정 통계량 D 계산
- 카이제곱 검정(Chi-Square Test)을 통해 유의성 검토
부트스트랩
- 정규성 가정이 어렵거나 표본 크기가 작을 때 유용한 방법
- 일반적인 가능도비 검정에서는 카이제곱 분포를 이용해 유의성을 평가를 한다.
- 표본 크기나 작거나 데이터가 정규성을 따르지 않을 경우 카이제곱 근사법이 잘 맞지 않을 수 있음
- 비표준적인 모형(예 : 랜덤 효과 포함 GLMM) 에서는 카이제곱 검정이 적절하지 않을 수 있음
👉 이럴 때 부트스트랩을 사용하면 데이터에서 반복적으로 샘플링하여 보다 신뢰성 높은 p-value를 얻을 수 있음
AIC
통계 모형을 비교하는 또 다른 방법으로 정보량에 근거한 모형 선택이 있습니다.
AIC(아카이케 정보기준, Akaike information criterion)
: 새롭게 얻을 데이터를 얼마나 잘 예측할 수 있는지를 바탕으로 모형의 좋음(적합도)를 결정하는 지표
$$ AIC = -2 \log L + 2k $$
여기서:
- L : 모형의 가능도 (Likelihood)
- k : 추정된 모수(parameter)의 개수
- logL : 모형의 로그 가능도 (Log-Likelihood)
설명:
- 가능도 L 가 커질수록 (즉, 데이터에 대한 적합도가 높을수록) AIC 값이 작아짐
- 모수 개수 k 가 많아질수록 (즉, 복잡한 모형일수록) AIC 값이 커짐
- 따라서, AIC는 적절한 균형을 찾아 과적합을 방지하면서 데이터에 잘 맞는 모델을 선택하는 데 사용됨
AIC 비교 해석
- AIC가 작을수록 더 좋은 모형
- 여러 개의 모형을 비교할 때, 가장 작은 AIC 값을 가진 모형을 선택
🚀 AIC는 회귀 분석, 시계열 분석, 일반화 선형 모델(GLM) 등에서 널리 사용됨!
예시
- 모형 1 : y = a의 AIC = 150.0
- 모형 2 : y = a + bx 의 AIC = 140
- 모형 3 : y = a + bx + cx 의 AIC = 142
AIC가 최소화 하는 모델인 모형 2를 선택
가능도비 검정은 비교할 모형이 내포 관계여야 하지만, AIC는 그렇지 않더라도 적용이 가능하다.
BIC
BIC(베이즈 정보기준, Bayesian information criterion)
$$ BIC = -2 \log L + k \log n $$
여기서:
- L : 모형의 가능도 (Likelihood)
- k : 추정된 모수(parameter)의 개수
- n : 데이터의 샘플 크기 (즉, 데이터 포인트의 개수)
AIC와 다른 점은 표본크기 n에 따라 달라진다는 점으로, 표본크기 n이 클수록 파라미터 개수 k의 페널티가 커짐을 알 수 있습니다.
BIC 최소화에 따른 모형 선택에는 분석자가 상정한 통계 모형 후보 중 실제 모형이 있을 떄, 표본크기 n을 무한대로 하면 실제 모형을 고를 확률이 1이 된다는 일치성이 있습니다.
BIC 해석
- 가능도 LL 가 커질수록 (즉, 데이터에 대한 적합도가 높을수록) BICBIC 값이 작아짐
- 모수 개수 kk 가 많을수록 (즉, 모델이 복잡할수록) BICBIC 값이 커짐
- 샘플 크기 nn 가 커질수록 (즉, 데이터가 많을수록) BICBIC 값의 벌점이 커짐
BIC 비교 해석
- 여러 개의 모형을 비교할 때, 가장 작은 BIC 값을 가진 모형을 선택
- BIC는 모델이 데이터에 적합하면서도 복잡도를 낮추는 것을 선호하기 때문에 과적합을 방지하는 데 유용합니다.
그 밖의 정보 기준
AICc : AIC을 보정해 표본크기가 작을 때 사용
DIC : 최대가능도 방법이 아닌 베이즈 추정으로 얻은 모형을 대상으로 한 편차정보기준
AIC나 BIC는 파라미터 추정량분포를 정규분포로 근사할 수 있는 단순한 모형일 떄 사용하는 방법
그렇지 않은 계층적 베이지안 모형이나 관찰할 수 없는 변수를 포함하는 모형일 때는 WAIC나 WBIC를 사용할 수 있다.
'Statistics' 카테고리의 다른 글
[통계 101 x 데이터 분석] 인과와 상관 (0) | 2025.02.06 |
---|---|
[통계 101 x 데이터 분석] 가설검정의 주의점 (0) | 2025.02.05 |
[통계 101 x 데이터 분석] 상관과 회귀 (0) | 2025.01.28 |
[통계 101 x 데이터 분석] 다양한 가설 검정 (0) | 2025.01.23 |
[통계 101 x 데이터 분석] 가설검증 (1) | 2025.01.22 |