sampling error from a truncated normal distribution

조회 수: 8 (최근 30일)
piyius raj
piyius raj 2020년 3월 16일
답변: Jeff Miller 2020년 3월 16일
Hi everyone,
Please see the code below. I tried to sample from a truncated normal distibution but the sample histogram is not matching with the actual truncated distribution plot. Can anyone help me with this.
t = 0.01;
n = 10000;
d_mu = 0.0052;
d_COV = 61.35;
d_sig = d_COV*d_mu/100;
pd = makedist('Normal','mu',d_mu,'sigma',d_sig); % normal distribution
tpd = truncate(pd,0,t); % truncated normal distribution
d_norm = random(pd,n,1); % sample from normal
d_tnorm = random(tpd,n,1); % sample from truncated normal
x = linspace(-.01,.02,n);
figure
plot(x,pdf(pd,x))
hold on
plot(x,pdf(tpd,x),'LineStyle','--')
histogram(d_tnorm,30)
legend('Normal','Truncated','Truncated bar')
hold off

답변 (2개)

Walter Roberson
Walter Roberson 2020년 3월 16일
When you use truncate(), it does not make the samples outside the range just vanish: it adjusts the distribution so that the total is still 1.
Truncated distribution, returned as a probability distribution object. The probability distribution function (pdf) of t is 0 outside the truncation interval. Inside the truncation interval, the pdf of t is equal to the pdf of pd, but divided by the probability assigned to that interval by pd.
  댓글 수: 5
Walter Roberson
Walter Roberson 2020년 3월 16일
d_pit_COV and d_pit_mu are not defined.
piyius raj
piyius raj 2020년 3월 16일
Sorry. The correct code is
t = 0.01;
n = 10000;
d_mu = 0.0052;
d_COV = 61.35;
d_sig = d_COV*d_mu/100;
pd = makedist('Normal','mu',d_mu,'sigma',d_sig); % normal distribution
tpd = truncate(pd,0,t); % truncated normal distribution
d_norm = random(pd,n,1); % sample from normal
d_tnorm = random(tpd,n,1); % sample from truncated normal
x = linspace(-.01,.02,n);
figure
plot(x,pdf(pd,x))
hold on
plot(x,pdf(tpd,x),'LineStyle','--')
histogram(d_tnorm,30)
legend('Normal','Truncated','Truncated bar')
hold off

댓글을 달려면 로그인하십시오.


Jeff Miller
Jeff Miller 2020년 3월 16일
Change the histogram line to this:
histogram(d_tnorm,30,'Normalization','pdf')

제품


릴리스

R2018a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by