공식 ECDF 값 계산하기
콜모고로프-스미르노프 검정을 수행하려면, 임의의 점에서 공식 ECDF(경험적 누적 분포 함수)의 값을 계산할 수 있어야 합니다. 즉, 데이터셋 data로부터 도출된 공식 ECDF의 값을, 배열 x의 각 원소에 대해 반환하는 함수 ecdf_formal(x, data)가 필요합니다. 아래 세 함수 중 두 개는 이 계산을 올바르게 수행하고, 하나는 그렇지 않습니다. 올바르게 계산하는 두 함수 중 하나는 더 빠릅니다. 각 함수에 적절한 레이블을 붙여 보세요.
참고로, ECDF는 공식적으로 ECDF(x) = (x 이하인 샘플 수) / (전체 샘플 수)로 정의됩니다. np.searchsorted()의 독스트링(doc string)도 확인해 보세요.
a)
def ecdf_formal(x, data):
return np.searchsorted(np.sort(data), x) / len(data)
b)
def ecdf_formal(x, data):
return np.searchsorted(np.sort(data), x, side='right') / len(data)
c)
def ecdf_formal(x, data):
output = np.empty(len(x))
data = np.sort(data)
for i, x_val in x:
j = 0
while j < len(data) and x_val >= data[j]:
j += 1
output[i] = j
return output / len(data)
이 연습은 강의의 일부입니다
