728x90
선형성 : 독립변수(feature)의 변화에 따라 종속변수도 일정 크기로 변화해야 한다.
정규성 : 잔차항이 정규분포를 따라야 한다.
독립성 : 독립변수의 값이 서로 관련되지 않아야 한다.
등분산성 : 그룹간의 분산이 유사해야 한다. 독립변수의 모든 값에 대한 오차들의 분산은 일정해야 한다.
다중공선성 : 다중회귀 분석 시 두 개 이상의 독립변수 간에 강한 상관관계가 있어서는 안된다.
# 잔차항 구하는 방법 : (실제값 - 예측값)
# 1. 선형성
import seaborn as sns
sns.regplot(예측값, 잔차항, lowess=True, line_kws = {'color' : 'red'})
# 선형성은 seaborn의 regplot으로 확인한다.
# 2. 정규성
import scipy.stats
sr = scipy.stats.zscore(잔차) #zscore 구하기
(x,y), _ = scipy.stats.probplot(sr) # Q-Q plot을 위한 x, y값
sns.scatterplot(x,y) # seaborn의 scatterplot 이용
# 정규성 만족 확인을 그래프말ㄹ고 데이터로 하려면
# scipy.stats.shapiro(잔차) 이용한다.
# 3. 독립성
# summary()함수를 이용하면 나온는 Durbin-Watson 값으로 비교한다
# 0에 가까우면 -자기상관 4에 가까우면 + 자기상관이다. > 2에 가까울수록 독립성 만족
# 4. 등분산성
sr = scipy.stats.zscore(잔차) #zscore 구하기
sns.regplot(예측값, sr분산값, lowess = True, line_kwss = {'color':'red'})
# if 정규성은 만족, 등분산성은 만족X 일 경우 가중회귀분석(weighted regression) 사용
# 5. 다중공선성
from statsmodels.stats.outliers_influence import variance_inflation_factor
# VIF (Variable Inflaction Factors : 분산 팽창 계수) 값 확인 : 10을 넘으면 다중공선성을 의심
print(variance_inflation_factor(advdf.values, 1)) # 다중공선성 확인
# 참고 - 극단치 (이상치) 확인 - Cook`s distance
from statsmodels.stats.outliers_influence import OLSInfluence
cd, _ = OLSInfluence(lm_mul).cooks_distance # 극단값을 나타내는 지표 반환
print(cd.sort_values(ascending =False).head())
import statsmodels.api as sm
sm.graphics.influence_plot(lm_mul, criterion = 'cooks')
728x90
'데이터분석 > 데이터분석' 카테고리의 다른 글
로지스틱 회귀분석 (Logistic Regression) (0) | 2022.05.09 |
---|---|
선형 회귀의 평가 지표 (0) | 2022.05.04 |
회귀 분석 (Regression Analysis) (0) | 2022.05.02 |
상관 관계 분석 (Correlation Analysis) (0) | 2022.05.02 |
비율분석 (0) | 2022.04.30 |