programming/파이썬으로 배우는 통계학

[파이썬/통계] Python 통계 : type 2 anova / 독립변수가 여럿인 모델 / t검정/ 적합한 독립변수 선택

Jofresh 2023. 5. 22. 16:40
728x90
반응형

독립변수가 여럿인 모델

매상 예측 모델에서는 습도, 기온, 날씨, 가격이라는 독립변수를 사용합니다.

날씨는 카테고리형 변수이며, 그 외에는 연속형 변수입니다. 복수의 독립변수를 가지고 있어도 일반 선형모델 구조를 이용해서 통일적인 분석, 해석, 예측이 가능합니다. 이절에서는 분산분석에서 type 2 anova라 불리는 검정 방법을 설명하겠습니다. 

 

 

복수의 독립변수가 있을 경우 그 변수들의 유의미함을 어떻게 판정하는지 배울겁니다!!

용어 설명
카테고리형 변수와 연속형 변수는 통계 및 데이터 분석에서 사용되는 변수의 두 가지 주요 유형입니다.

카테고리형 변수:

카테고리형 변수(또는 범주형 변수)는 명목형 변수라고도 불리며, 일정한 범주 또는 레벨로 구성된 변수입니다.
이러한 변수는 일반적으로 명목적인 속성을 가지며, 범주 간의 순서나 크기를 나타내는 의미는 없습니다.
예시로는 성별(남성, 여성), 혈액형(A, B, AB, O), 국적(한국, 미국, 일본 등) 등이 있습니다.
카테고리형 변수는 주로 더미 변수로 인코딩되어 분석에 사용됩니다.

연속형 변수:

연속형 변수는 숫자형 변수라고도 불리며, 연속적인 숫자 값 또는 범위로 구성된 변수입니다.
이러한 변수는 수량적인 속성을 가지며, 범주 간의 순서나 크기를 나타내는 의미가 있습니다.
예시로는 나이, 키, 체중, 소득, 온도 등이 있습니다.
연속형 변수는 주로 측정 값이나 관측 값으로 표현되며, 통계적 분석 및 계산에 사용됩니다. 연속형 변수는 연속적인 범위에서 무한히 많은 가능한 값들을 가질 수 있습니다.

카테고리형 변수와 연속형 변수는 데이터 유형과 분석 방법에 따라 다른 처리가 필요할 수 있습니다. 카테고리형 변수는 주로 더미 변수로 변환하여 범주 간의 차이를 분석하거나 분류 모델에 사용됩니다. 반면에 연속형 변수는 평균, 분산, 상관관계 등의 통계적 측정이 가능하며, 회귀 분석, 상관 분석, t-검정 등의 분석 기법에 사용됩니다.

 

 

필요한 라이브러리 임포트

# 수치 계산에 사용하는 라이브러리
import numpy as np
import pandas as pd
import scipy as sp
from scipy import stats

# 그래프를 그리는 라이브러리
from matplotlib import pyplot as plt
import seaborn as sns
sns.set()

# 통계 모델을 추정하는 라이브러리(워크닝이 나올 수도 있습니다)
import statsmodels.formula.api as smf
import statsmodels.api as sm

# 표시 자릿수 지정
%precision 3
# 그래프를 jupyter Notebook 내에 표시하도록 하기 위한 지정
%matplotlib inline

데이터 가져오기

- 이번 데이터는 어느 가게의 가상의 매상 데이터입니다.

5-3-1-lm-model.csv
0.00MB

 

 

습도, 온도, 날씨가 매출과 판매 가격에 미치는 영향

 

 

데이터로 그래프 그리기

- 이번에는 독립변수가 여러 개 있기 때문에 페어플롯을 그립니다.

습도, 가격, 매상, 기온의 날씨별 페어플롯

이렇게 봐서는 각 변수들이 매출이나 가격에 어떤 영향을 끼치는지 한 눈에 알기 어려워 보입니다. 기온이 높아지면 습도도 높아지는 관계가 있는 것 같습니다.

 

독립변수 간의 관계 조사하기

- groupby함 수를 사용해서 날씨별 평균값을 집계

비오는 날은 매상이 떨어졌습니다. 게다가 낮은 가격으로 억제되고 있네요. 

이는 비오는 날에는 매상이 떨어지기 때문에 그 대책으로 가격을 인하했다고 생각하는 것이 자연스럽습니다.

하지만 비오는 날 매상이 떨어지며, 가격을 인하한 날에도 매상이 떨어지는 것처럼 보입니다. 

 

우리는 날씨가 같았을 때 상품 가격이 매출에 미치는 영향을 알아 봐야 할 것 같습니다.

 

위 그래프를 보면 맑은 날 쪽이 높은 매출을 보여주고, 날씨별로 보면 가격이 높아지면 매출이 줄어든다는 것을 알 수 있습니다. 

 

방금 전과 결론이 완전 반대입니다.

 

원래는 독립변수 간에 아무런 관련이 없는 데이터를 사용하는 것이 좋습니다. 하지만 분석을 간단하게 하기 위해 가게가 랜덤하게 가격을 바꾼다고 가정하는 것은 현실적이지 않습니다. 이러한 데이터에 일반적인 검정을 실시하는 것은 위험합니다.

 

뭐 맑은 날 데이터만 가져와서 따로 조사하고, 비오는 날 데이터를 별도로 분석하는 방법도 있찌만 이런 방법은 계수 검정을 할 때 맑은 날과 비오는 날 2번의 검정을 반복하게 되어 검정의 다중성 문제가 발생합니다. 각 요인의 영향을 올바르게 판단하기 위해서는 복수의 독립변수를 가지는 모델을 한 번에 추정해야 합니다. 그리고 sns.lmplot의 결과는 비오는 날과 맑은 날의 기울기가 서로 다르지만 이는 sns.lmplot의 사양입니다. 이번에는 기울기가 다르지 않다는 전제하에 분석을 해보겠습니다.

 

복수의 독립변수를 가지는 모델

이번에는 독립변수 4개 다 들어간 모델을 추정하겠습니다. 독립변수 + 기호로 연결하여 복수의 독립변수를 모델에 포함시킬 수 있습니다. 

 

가장 주목해야 할 점은 가격 계수가 마이너스라는 것입니다. 가격이 오르면 매출이 떨어진다는 것을 알 수 있습니다.(습도도 마찬가지 이고, 온도와 맑은날에는 매출이 증가합니다.)

 

일반적인 분산분석으로 검정하기(X)

이전 포스팅에서 배운 대로 일반적인 분산분석으로 검정을 진행하면 문제가 발생합니다.

위와 같이 변수의 순서를 바꾸면 다른 검정 결과를 가져옵니다. 이럴 때 분산분석 대신 회귀계수의 t검정을 하면 앞서와 같은 문제는 일어나지 않습니다.

 

회귀계수의 t검정

t검정 결과 변수의 순서를 바꿔도 결과값이 동일합니다!

습도의 회귀계수의 p값은 0.578입니다. 

 

t검정에서 독립변수의 순서가 초래하는 문제는 발생하지 않는 다는 것을 알 수 있지만, 이번에는 날씨라는 카테고리형 변수의 가짓수가 맑음 or 비 둘뿐이었습니다.

 

만약 흐림이라는 날씨도 있었다면 날씨의 영향을 t검정으로 판단하는 것은 검정 다중성의 문제가 생길 것 입니다.

 

Type 2 Anova 

독립변수를 넣는 순서를 바꿔도 검정 결과가 변하지 않는 분산분석을 Type 2 Anova 라고 합니다. 

 

모든 독립변수가 포함된 모델의 잔차제곱합과 습도만 제거한 모델의 잔차제곱합을 구합니다.

잔차제곱합의 차는 아래와 같습니다.

 

조정 제곱합을 이용한 분산분석인 type 2 anova는 typ =2 라는 파라미터를 넘김으로써 실행할 수 있습니다.

p값이 0.578이고, 습도는 매상에 대해 유의미한 영향을 끼치고 있다고 볼 수 없다는 결과를 얻었습니다.

 

독립변수가 1개밖에 없는 경우 type 1 anova의 결과와 type 2 anova의 결과는 일치합니다. 

 

또한 2개의 모델을 직접 비교하는 함수도 있습니다.

 

 

출력으로 나온 3개 값은 각각 

1) F비

2) p값

3) 2개 모델의 자유도 차이입니다.

 

Type 2 Anova의 해석

습도의 영향을 검정한 결과는 다른 독립변수가 있는 조건에서도 습도가 매상에 영향을 끼치고 있는지 판단할 수 있는가를 조사한 것이라 해석할 수 있습니다.

 

습도는 기온과 강한 상관관계가 있었습니다. 그렇다면 기온이라는 독립변수가 모델에 포함되어 있으면 습도는 매상에 영향을 끼친다고 볼 수 없게 되는 상황이 있을 수도 있습니다.

 

습도는 모델에서 필요 없다는 것을 알 수 있었으므로 습도를 뺀 모델인 mod_non_humi에서 다시 Type 2 Anova를 수행합니다.

 

이제 유의미하지 않은 변수는 없습니다! 이것으로 변수 선택은 종료입니다.

 

계수 등의 결과에 대한 해석은 변수 선택 후의 모델을 이용해서 수행합니다. 잘못된 변수의 조합으로 모델링 결과를 예측이나 해석에 사용하면 안됩니다! 예를 들어 독립변수에 가격만 넣은 모델의 계수를 사용하여 해석을 하면 잘못된 결론을 이끌어내게 됩니다.

 

위에서 weater[T.sunny]는 비오는 날과 비교하면 매상이 20 증가한다는 것을 의미합니다. 이러한 계수를 사용함으로써 매상의 예측 등을 할 수 있습니다.

 

AIC를 이용한 변수 선택

용어 설명
AIC는 모델의 적합도와 복잡성을 평가하는 지표로, 낮은 AIC 값일수록 모델이 데이터를 잘 설명하면서도 간단한 모델을 선호합니다.
AIC 값을 통해 여러 모델 중에서 가장 적합한 모델을 선택할 수 있습니다. 여러 모델을 비교할 때, AIC 값이 가장 낮은 모델이 데이터를 가장 잘 설명하면서도 변수의 수가 적은 모델로 선택됩니다. 이를 통해 변수 선택이나 모델의 단순화에 도움을 줄 수 있습니다.

AIC를 이용해서 변수 선택을 해보겠습니다. AIC는 분산분석처럼 계산 방법을 바꿀 필요가 없습니다. 모델을 만들고 AIC를 비교면됩니다! 예를 들어 모든 변수를 포함한 모델인 mod_full과 습도를 제외한 모델인 mod_non_humi의 AIC를 비교해보겠습니다.

 

 

습도를 제외한 모델의 AIC가 더 작아졌습니다. 이 때문에 역시 습도는 매상 예측 모델에서 제외 해야 한다는 것이 됩니다. 원래는 모든 변수의 조합으로 AIC를 비교해야 하지만 생략하겠습니다.

 

AIC를 이용한 모델 선택은 절차적으로 보면 거의 기계적으로 수행 가능합니다. 계수의 T검정과 달리 여러 카테고리를 가진 변수라 하더라도 검정의 다중성을 걱정할 필요가 없습니다. 얻은 모델의 해석도 모르는 데이터에 대한 예측 오차를 최소로 하는 변수의 조합을 선택했다고 볼 수 있습니다. 검정의 비대칭성도 문제가 없습니다. 최근의 데이터 분석에서 AIC가 중요한 역할을 맡는 이유는 사용하기 편리하다는 점을 들 수 있습니다. 다만 검정의 P값을 지나치게 믿는 것처럼 AIC를 과신하는 것도 문제가 있습니다. 얻은 계수의 해석이나 변수 선택의 해석, 잔차 체크등 포괄적인 평가를 수행하는게 좋습니다!

728x90
반응형