필터 지우기
필터 지우기

Why does this probability density function looks off?

조회 수: 3 (최근 30일)
Mohannad Abboushi
Mohannad Abboushi 2017년 1월 24일
댓글: Mohannad Abboushi 2017년 2월 1일
I have a random variable x which has a mean of 10 and a variance of 16. I used the following code to generate the array and the PDF:
x= randn(100,1) * sqrt(16)+10;
mu = 10;
sigma = 4;
pd = makedist('Normal',mu,sigma);
y=pdf(pd,x);
hist(y)
Should i be plotting with something other than hist or is x itself wrong? Thank you.

채택된 답변

the cyclist
the cyclist 2017년 1월 24일
편집: the cyclist 2017년 1월 24일

The mistake is in using hist. Plot x vs. y instead, because y is the value of the pdf itself.

x= randn(100,1) * sqrt(16)+10;
mu = 10;
sigma = 4;
pd = makedist('Normal',mu,sigma);
y=pdf(pd,x);
figure
plot(x,y,'.')
  댓글 수: 5
the cyclist
the cyclist 2017년 1월 25일
편집: the cyclist 2017년 1월 25일

You fell into the same trap of not multiplying by dx. I'm not certain, but you may also failed to account for the fact that your values of y are not ordered. So, I think you may have gotten a more-or-less random answer.

There is no need to choose your x at random. It would be much better to choose an evenly spaced array of x from the beginning, and your whole problem becomes simpler.

Like this ...

mu = 10;
sigma = 4;
dx = 0.01;
x = mu - 5*sigma : dx : mu + 5*sigma;
pd = makedist('Normal',mu,sigma);
y=pdf(pd,x);
figure
plot(x,y)
probability_total = sum(dx*y)
Probability_x_greater_than_5 = sum(dx.*y(x>5))

I got 0.8941 for that probability.

Notice that these are probabilities, so they lie between 0 and 1. If you want them represented as percentages, then divide by 0.01.

Mohannad Abboushi
Mohannad Abboushi 2017년 2월 1일
Awesome thank you very much that was a good explanation!

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

추가 답변 (0개)

Community Treasure Hunt

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

Start Hunting!

Translated by