728x90
반응형
def where_is_d(x,y):
'''
param x,y: 숫자들로 이루어진 list (ex. [1,2,3])
return w[o[i]]: 해당값은 ecdf-plot에서 x축의 위치를 의미하게됨.
오류가 발생한다면 다양한 지점이 D값을 가질 수 있어서임.
'''
n,m=len(x),len(y)
w=x+y
o=np.argsort(w)
o1=[m if o_i <= n else -n for o_i in o]
z=np.cumsum(o1)
i=np.where(abs(z)==np.max(abs(z)))[0][0]
return w[o[i]]
KS-test 후 2개의 empirical cumulative density function (ECDF)간의 최대거리 차이를 D값이라한다.
종종 D값이 발생하는 지점이 어디인지 위치를 알고 싶을 때 사용할 수 있는 스크립트이다.
예제는 아래와 같다.
x=np.random.randn(100)+1
y=np.random.randn(200)+1
print('D is located at',where_is_d(list(x),list(y)))
from statsmodels.distributions.empirical_distribution import ECDF
cdf=ECDF(x)
plt.plot(cdf.x, cdf.y, label="up", markerfacecolor='none')
cdf=ECDF(y)
plt.plot(cdf.x, cdf.y, label="bd", markerfacecolor='none')
plt.axvline(where_is_d(list(x),list(y)))
plt.legend()
결과물은 아래와 같다.
파란색 수직선이 2개의 ECDF의 최대치가 되는 지점이다.
728x90
반응형
'파이썬3' 카테고리의 다른 글
tensorflow==1.13.1설치 도커 (0) | 2022.04.27 |
---|---|
유전자 정보 불러오기 (mygene) (0) | 2022.04.13 |
파이썬 생존분석과 Kaplan-meier plot 그리기 (0) | 2022.01.13 |
[아나콘다] git 설치 (0) | 2021.12.29 |
유전자의 펩타이드 시퀀스 불러오는 함수 (0) | 2021.11.26 |