2017-03-01 1 views
1

파이썬에서 비모수 적 부트 스트랩을 구현하려고합니다. 샘플을 가져 와서 경험적 분포 함수를 만들고이 edf에서 많은 샘플을 생성해야합니다. 내가 어떻게 해? scipy에서 정확한 수식을 알고있는 경우 자신의 배포 함수를 만드는 방법을 찾았지만 edf 만 있습니다.경험적 분포 함수에서 샘플을 만드는 방법

+0

왜 EDF가 필요합니까? 당신은 당신의 부트 스트랩 샘플이 될 데이터로부터 샘플링 (대체)해야합니다. – maxymoo

답변

0

당신이 샘플을 정렬하여 얻는 EDF : 만 재 샘플링하려면

N = samples.size 
ss = np.sort(samples) # these are the x-values of the edf 
         # the y-values are 1/(2N), 3/(2N), 5/(2N) etc. 
edf = lambda x: np.searchsorted(ss, x)/N 

그러나, 당신은 단순히 동일한 확률 및 교체와 샘플에서 그립니다.

원하는대로 너무 "끈적"이라면 원활한 분배를 위해 일종의 보간을 사용할 수 있습니다.

+0

EDF는 ** 정의 ** steppy입니다! – maxymoo

+0

@maxymoo 예 알아요. 그러나 일반적으로 edf에 대한 관심은 edf에 대한 것이 아니라 "true"분포를 추정하는 장치입니다. 그리고 진정한 분배가 원활하다고 가정 할 충분한 이유가있을 수 있습니다. 또한 새 샘플을 사용하는 대상에 따라 실제 분포가 매끄러운 이산 분포에서 샘플링하면 아티팩트가 발생할 수 있습니다. –

+0

이것은 흥미 롭습니다 ... 자주 부트 스트랩을 부드럽게 만드나요? – maxymoo

관련 문제