sampling error from a truncated normal distribution
Ältere Kommentare anzeigen
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

Antworten (2)
Walter Roberson
am 16 Mär. 2020
0 Stimmen
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 Kommentare
piyius raj
am 16 Mär. 2020
Walter Roberson
am 16 Mär. 2020
In order for there to be a match like you want, what you would have to have is something that drew randomly from the normal distribution and threw away the samples outside the truncation region. The result would not be a probability distribution -- it would not have the required pdf and cdf properties to be a probability distribution.
The Statistics Toolbox truncate() operation, on the other hand, constructs something that is still a probability distribution, by dividing the pdf of the truncated area by the probability of the interval, getting out something whose total probability is still 1.
For example, there is some point on the normal distribution that where the probability is 1/10, and you want the probability to still be 1/10 for that point, but it can't be 1/10 anymore because the probability of selecting anything outside the truncated area is 0 and the total probability that was originally outside the truncation area has to go somewhere.
piyius raj
am 16 Mär. 2020
Walter Roberson
am 16 Mär. 2020
d_pit_COV and d_pit_mu are not defined.
piyius raj
am 16 Mär. 2020
Jeff Miller
am 16 Mär. 2020
Change the histogram line to this:
histogram(d_tnorm,30,'Normalization','pdf')
Kategorien
Mehr zu Student's t Distribution finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!