기본 콘텐츠로 건너뛰기

라벨이 outlier인 게시물 표시

[matplotlib]quiver()함수

Statistical analysis results graph code

The following graphs are the codes for the figures included in Chapters 6 and 7 of the e-book Statistics with Python . import numpy as np import pandas as pd from scipy import stats from sklearn.preprocessing import StandardScaler import FinanceDataReader as fdr import yfinance as yf import statsmodels.api as sm from statsmodels.formula.api import ols from sklearn.linear_model import LinearRegression import matplotlib.pyplot as plt import seaborn as sns sns.set_style("darkgrid") #fig 611 st=pd.Timestamp(2024,1, 1) et=pd.Timestamp(2024, 5, 30) code=["^KS11", "^KQ11", "^DJI", "KRW=X"] nme=['kos','kq','dj','WonDol'] da=pd.DataFrame() for i in code: x=yf.download(i,st, et)['Close'] x1=x.pct_change() da=pd.concat([da, x1], axis=1) da.columns=nme da1=da.dropna() da1.index=range(len(da1)) da2=pd.melt(da1, value_vars=['kos', 'kq', 'dj', 'WonDol'], var_name=...

통계분석 결과 그래프

다음 그래프들은 전자책 파이썬과 함께하는 통계이야기 6 장과 7장에 수록된 그림들의 코드들입니다. import numpy as np import pandas as pd from scipy import stats from sklearn.preprocessing import StandardScaler import FinanceDataReader as fdr import yfinance as yf import statsmodels.api as sm from statsmodels.formula.api import ols from sklearn.linear_model import LinearRegression import matplotlib.pyplot as plt import seaborn as sns sns.set_style("darkgrid") #fig 611 st=pd.Timestamp(2024,1, 1) et=pd.Timestamp(2024, 5, 30) code=["^KS11", "^KQ11", "^DJI", "KRW=X"] nme=['kos','kq','dj','WonDol'] da=pd.DataFrame() for i in code: x=yf.download(i,st, et)['Close'] x1=x.pct_change() da=pd.concat([da, x1], axis=1) da.columns=nme da1=da.dropna() da1.index=range(len(da1)) da2=pd.melt(da1, value_vars=['kos', 'kq', 'dj', 'WonDol'], var_name="idx", value_name="val") model=ols("val~...

[ML] 마할로비스(Mahalnobis) 거리와 이상치 감지

마할로비스(Mahalnobis) 거리 마할로비스(Mahalnobis) 거리 벡터인 한점과 분포 사이의 거리를 측정하는 효과적인 다변량 거리 메트릭스 이 지표는 다변량의 이상 탐지, 높은 불균형한 데이터 세트의 분류, 단일 클래스 분류, 새로운 데이터들의 예측에 효과적입니다.2차원의 두 점사이의 거리를 나타낼 경우 일반적으로 유클리드거리가 사용됩니다. 그 두점 (p1, p2), (q1, q2)라고 하면 유클리드 거리는 다음과 같이 계산됩니다. $$\tag{식 1}d(p, q) =\sqrt{(p_1-q_1)^2+(p_1-q_2)^2}$$ 식 1을 다차원으로 확장하면 즉, $(p_1, p_2, \cdots, p_n), \;(q_1, q_2, \cdots, q_n)$ 유클리드 거리는 식 2와 같이 계산됩니다. $$\tag{식 2}d(p, q) =\sqrt{(p_1-q_1)^2+(p_1-q_2)^2+ \cdots +(p_n-q_n)^2}$$ 식 2와 같이 다차원의 경우 모든 차원에 대한 가중치는 전혀 고려되지 않습니다. 즉, 차원들 사이에 영향이 없다는 가정이 성립되어야 합니다(모든 차원은 독립적). import numpy as np import numpy.linalg as la import pandas as pd from sklearn.preprocessing import StandardScaler import matplotlib.pyplot as plt import seaborn as sns sns.set_style("darkgrid") np.random.seed(3) X=np.random.normal(0, 1, 100) X1=np.linspace(-2,2, 100) y1=X1+np.random.randn(100) p1=(-1, 1) p2=(1, 1) fig, ax=plt.subplots(1, 2, figsize=(7, 3), sharey=True) ax[0].scatter(X1, X, s=5) ax[0].sc...

[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...