statsmodels.stats.outliers_influence.variance_inflation_factor 함수는 다중 선형 회귀 분석에서 다중공선성(Multicollinearity)을 평가하는 데 사용되는 함수입니다. 이 함수는 statsmodels 라이브러리의 statsmodels.stats.outliers_influence 모듈에 포함되어 있습니다.
시그니처
시그니처(함수의 형태)는 다음과 같습니다.
variance_inflation_factor(exog, exog_idx)
exog: 설명 변수(explanatory variables 또는 독립 변수)로 구성된 데이터 프레임이나 배열입니다. 이 변수들 간의 다중공선성을 평가하려는 데이터 세트입니다.
exog_idx: 평가하려는 설명 변수의 인덱스 또는 위치를 지정합니다. 이 매개변수는 한 번에 하나의 변수만 평가하는 데 사용됩니다. 다른 변수들과의 다중공선성을 측정하려면 이 매개변수를 각 변수에 대해 반복적으로 호출해야 합니다.
variance_inflation_factor 함수는 주어진 설명 변수의 다중공선성을 평가하기 위해 분산 팽창 계수(Variance Inflation Factor, VIF)를 계산합니다. VIF는 해당 변수가 다른 설명 변수들로 얼마나 설명될 수 있는지를 나타내며, 값이 크면 다중공선성이 높다는 것을 나타냅니다. 일반적으로 VIF가 1보다 큰 경우 다중공선성이 발생한다고 판단됩니다. 따라서 VIF 값이 낮을수록 설명 변수 간의 다중공선성이 낮다고 할 수 있습니다.
다중공선성은 회귀 분석 결과의 신뢰성을 저해할 수 있으므로, 이 함수를 사용하여 다중공선성을 평가하고 문제가 발견되면 해당 변수를 수정하거나 제거하여 모델을 개선할 수 있습니다.
예제
다중공선성을 평가하기 위해 variance_inflation_factor 함수를 사용하는 간단한 예제를 보여드리겠습니다. 이 예제에서는 Python의 pandas와 statsmodels 라이브러리를 사용합니다.
먼저, 필요한 라이브러리를 가져옵니다.
import pandas as pd
from statsmodels.stats.outliers_influence import variance_inflation_factor
다음으로, 가상의 데이터 프레임을 생성하겠습니다.
data = {'X1': [1, 2, 3, 4, 5],
'X2': [2, 4, 6, 8, 10],
'X3': [1, 1, 2, 2, 3]}
df = pd.DataFrame(data)
이제, variance_inflation_factor 함수를 사용하여 각 변수의 VIF 값을 계산할 수 있습니다. 예를 들어, 'X1' 변수의 VIF 값을 계산하려면 다음과 같이 합니다.
vif_x1 = variance_inflation_factor(df.values, df.columns.get_loc('X1'))
print(f"VIF for X1: {vif_x1}")
이제 'X1' 변수의 VIF 값을 확인할 수 있습니다. 이를 다른 변수에 대해서도 반복적으로 수행하여 모든 변수의 다중공선성을 평가할 수 있습니다.
다중공선성이 높은 변수의 VIF 값이 크다면, 해당 변수를 수정하거나 다른 변수와의 관계를 고려하여 모델을 개선할 수 있습니다.
VIF 테이블 커스텀 함수
def get_vif(formula, df):
y, X = dmatrices(formula, df, return_type="dataframe")
vif = pd.DataFrame()
vif["VIF Factor"] = [variance_inflation_factor(X.values, i) for i in range(X.shape[1])]
vif["features"] = X.columns
return vif
참고
해당 게시글은 ChatGPT의 도움을 받아 작성되었습니다.
'AI > Machine-Learning' 카테고리의 다른 글
중요한 피쳐 탐색(중요도) (2) | 2023.09.07 |
---|---|
[Pandas] interpolate() (0) | 2023.09.07 |
[patsy] dmatrices (0) | 2023.09.07 |
[NumPy] nditer() (0) | 2023.09.07 |
모델별 적합한 상황과 장단점 (0) | 2023.09.04 |