기본 콘텐츠로 건너뛰기

라벨이 get_influence인 게시물 표시

[matplotlib]quiver()함수

[data analysis] 다중 회귀모형의 진단

다중 회귀모형의 진단 내용 정규성(normality) 과 이상치(outlier) 평가 독립성 선형성과 자기상관 등분산성 단순회귀모형과 같이 회귀분석은 몇 가지 가정 을 전제한 상태에서 모형을 구축합니다. 그러므로 그 가정의 충족되지 않은 자료들에서 생성된 모형의 경우 적용과 적합성에 문제가 발생됩니다. 예를 들어 데이터가 정규분포를 따르지 않는 상태에서 구축된 회귀모형의 예측 범위는 매우 넓어질 수 있으므로 그 자체의 의미가 감소됩니다. 또한 변수들의 독립성에 문제가 있는 경우 반응변수에 대한 설명변수들의 선택에서 발생하는 오류는 실제와 다른 결과를 가져올 수 있습니다. 이 원인들은 모두 회귀모형의 신뢰도를 악화시키며 예측정도를 빈약하게 만들 수 있습니다. 정규성(normality) 과 이상치(outlier) 평가 예 1) 다음 코드에 의해 생성된 자료 코스피지수(kos), 코스탁지수(kq), kodex 레버리지(kl), kodex 인버스(ki), 그리고 원달러환율(WonDol)의 일일 종가들을 설명변수로 사용하여 삼성전자(sam)의 일일 종가를 추정하는 회귀모델을 구축해 봅니다. (이 자료에서 설명변수는 반응변수보다 1일 앞선 데이터 입니다.) import numpy as np import pandas as pd import yfinance as yf st=pd.Timestamp(2023,1, 10) et=pd.Timestamp(2024, 5, 30) code=["^KS11", "^KQ11", "122630.KS", "114800.KS","KRW=X","005930.KS"] nme=["kos","kq","kl", "ki", "WonDol","sam" ] da={} for i, j in zip(nme,c...

[data analysis] Hat 행렬

Hat 행렬 관련된 내용 회귀모형에서 이상치(outlier) 파악 레버리지(Leverage) 스튜던트 잔차(rstudent) Cook's Distance(D) hat 행렬(H) 은 회귀모델을 적용하여 $\hat{y}$을 추정하는 과정에서 설명변수의 영향을 나타내기 위해 작성합니다. 식 1과 같이 최소제곱 방법에 의한 회귀계수를 적용한 추정치의 추정 과정에서 설명변수만으로 구성된 부분을 hat 행렬(P)이라 합니다. \begin{align}\hat{y} & = Xb\\&=X(X^TX)^{-1}X^Ty\\& = Py\\ H&= X(X^TX)^{-1}X^T\\& = P\end{align} (식 1) 이상치는 그 데이터가 보이는 일반적인 경향을 따르지 않는 값(들)을 의미합니다. 회귀분석시 일반적으로 이상치는 반응변수 값의 측면에서 고려되지만 설명변수 측면에서 극단의 값(x값)을 가진다면 그 데이터 지점은 높은 레버리지(leverage) 를 가진다고 말합니다. 이 레버리지 즉, 각 샘플의 설명변수의 영향은 hat 행렬의 대각요소 의 값으로 나타낼 수 있습니다. hat 행렬은 이상치를 판단하기 위한 기본 값들로 이를 기준으로 여러 지표를 계산할 수 있습니다. statsmodel.api.OLS()에 의해 생성되는 모델의 get_influence() 메소드는 이상치 판단을 위한 여러 지표들의 결과를 나타냅니다. 이 결과는 .summary_frame() 메소드로 확인할 수 있습니다. 기사 회귀모형에서 이상치(outlier) 파악 편에서 구축한 회귀모델 reg에 대해 이 메소드들을 실행하면 다음과 같습니다. import numpy as np import pandas as pd from sklearn.preprocessing import StandardScaler import matplotlib.pyplot as plt import FinanceDataReader ...

[data analysis] 레버리지(Leverage)

레버리지(Leverage) 회귀모형에서 이상치(outlier) 파악 Hat 행렬 스튜던트 잔차(rstudent) Cook's Distance(D) 레버리지가 높은 관측치는 설명(예측) 변수의 다른 샘플들에 비해 모델에 높은 영향을 미칠 수 있는 값으로 이상값이 될 수 있습니다. hat 행렬의 대각요소가 각 샘플의 레버리지를 나타내므로 높은 레버리지를 가진 관찰은 hat 통계량을 기준으로 결정할 수 있습니다. 일반적으로 주어진 데이터 세트에 대해 평균 레버리지를 기준으로 2 또는 3배보다 큰 레버리지를 갖는 관찰을 이상치의 대상으로 고려합니다. 이상적으로 hat 행렬이 대각요소가 모두 1이고 나머지 요소들이 모두 0인 경우 추정치와 관측치는 일치하게 될 것입니다. 그러나 실제 상황에서의 레버리지의 특성은 식 1과 같습니다. $$\text{tr(H)}=\sum^n_{i=1}h_{ii}=k$$ (식 1) 식 1에서 h ii 는 다음의 범위내에서 존재합니다. 0 < h ii < 1 H: hat 행렬 k: 모형에 사용된 모수의 개수(편차항 포함) N: 자료의 크기 위 get_influence() 의 결과인 hat 행렬의 대각요소들을 사용하여 식 1을 확인합니다. 이 대각요소들은 메소드 get_influence()의 hat_matrix_diag 속성(attribute)를 사용하여 호출할 수 있습니다. 또는 get_influence().summary_frame()의 속성(attribute) hat_diag 로 hat 행렬의 대각요소를 확인할 수 있습니다. import numpy as np import pandas as pd from sklearn.preprocessing import StandardScaler import matplotlib.pyplot as plt import FinanceDataReader as fdr import statsmodels.api as sm from ...

[data analysis] 회귀모형에서 이상치(outlier) 파악

회귀모형에서 이상치(outlier) 파악 관련된 내용 Hat 행렬 레버리지(Leverage) 스튜던트 잔차(rstudent) Cook's Distance(D) 회귀계수의 검정에서 사용한 f분포는 기본적으로 검정대상이 정규분포에 부합한다는 가정하에 실시합니다. 이점은 회귀분석의 기본가정인 정규성에 대한 이유가 되며 이것을 확인하기 위해 모델에 의해 생성되는 확률변수인 잔차의 정규성을 검정합니다. 정규성을 시각적으로 판단하기 위해 그림 1과 같은 q-q plot을 사용하며 정량적인 검정을 위해 Shapiro-wilk 또는 Anderson-Darling 검정방법을 적용할 수 있습니다. 그림 1은 stats.probplot() 에 의한 qq plot으로 양끝에서 정규성에 이탈하는 모양을 나타냅니다. 이에 대한 정량적인 검정은 stats.shapiro() 함수에 의해 실행합니다. 그림 1은 다음 코드로 생성되는 특정한 기간의 코스피 주가의 Open과 Close에 대한 회귀모델에서의 오차(error)에 대한 것입니다. 이 과정에서 원시데이터는 표준화하였습니다. import numpy as np import pandas as pd from sklearn.preprocessing import StandardScaler from sklearn.linear_model import LinearRegression from scipy import stats import matplotlib.pyplot as plt import FinanceDataReader as fdr st=pd.Timestamp(2021,1, 1) et=pd.Timestamp(2024, 5, 10) kos=fdr.DataReader('KS11',st, et)[["Open","Close"]] kos.index=range(len(kos)) X=kos.values[:,0].reshape(-1,1) y=k...