1

1977-1983 년 1 월에 3 시간 단위로 강수량 데이터 세트가 있습니다 (첨부 파일 참조). 그러나, 나는이 데이터에 근거하여 1984-1990 년 동안 강수량 데이터를 생성하려고합니다. 따라서, 나는 강수량 (1977-1983)의 맞춤형 확률 밀도 함수를 생성 할 수 있는지 궁금해서이 기간 동안 원하는 기간 (1984-1990) 동안 난수 (강수량 데이터)를 생성합니다.Matlab : 사용자 정의 확률 밀도 함수에서 임의의 숫자를 생성합니다.

이것이 Matlab에서 가능합니까? 누군가 그렇게 할 수 있습니까?

미리 감사드립니다.

Click to see an example of the data

+0

1977년에서 1983년까지의 데이터가 다음 '의 데이터를 이용하면 평균을 계산하고, 표준 편차를 샘플링 할 수 가우시안 경우 = normrnd (MU , σ, m, n)'mean = mu 및 표준 편차 = σ를 갖는 무작위로 분포 된 데이터 포인트의 amxn 배열을 얻는다. – sn8wman

답변

1

히스토그램은 당신에게 PDF의 견적을 줄 것이다 - 단지 샘플의 총 수에 의해 빈 카운트를 나눕니다. 여기에서 통합을 통해 CDF를 추정 할 수 있습니다. 마지막으로 0에서 1 사이의 균등하게 분산 된 난수를 선택하고 그 수를 산출 할 수있는 CDF의 인수를 추정 할 수 있습니다. 즉, y가 선택한 임의의 숫자이면 CDF (x) = y와 같은 x를 찾고 싶습니다. x의 값은 원하는 PDF가있는 임의의 숫자가됩니다.

0

당신이 '통계 및 기계 학습 도구 상자'가 있다면, 당신은 'Kernel Distribution' 방법으로 데이터의 PDF를 평가할 수 :

:

Percip_pd = fitdist(Percip,'Kernel'); 

그런 다음 같은 분포 N 난수를 생성하기 위해 사용

y = random(Percip_pd,N,1); 
0

AnonSubmitter85 @ 인용 :

"에스티마 CDF 통합. 마지막으로 0에서 1 사이의 균일 한 분포 난수를 선택하고 그 수를 산출 할 수있는 CDF 인 의 인수를 계산할 수 있습니다. 즉, y가 임의의 숫자 인 인 경우 CDF (x) = y가되도록 x를 찾고 싶습니다. X의 값은 원하는 PDF와 난수 것이다. "

%random sampling 
N=10; %number of resamples 

pdf = normrnd(0, 1, 1,100); %your pdf 
s = cumsum(pdf); %its cumulative distribution 

r = rand(N,1); %random numbers between 0 and 1 
for ii=1:N 
    inds = find(s>r(ii)); 
    indeces(ii)=inds(1); %find first value greater than the random number 
end 
resamples = pdf(indeces) %the resamples