In MATLAB (cumulative distribution function), how can I find the corresponding data point (Y) for any chosen cumulative probability?

조회 수: 17 (최근 30일)
In a CDF (using MATLAB,) how can I find the corresponding data value (X) for any chosen cumulative distribution (Y)? Please refer to the pasted code and image. Instead of "eye-balling" the plot, how can I find the data point (X) that corresponds to the cumulative probability value of 0.2 or even 0.466, etc.? Please advise. Thank you.
X = randn(1,500);
u = mean(X);
s = std(X);
pd = makedist('Normal','mu',u,'sigma',s);
x = min(X):.1:max(X);
cdf_normal = cdf(pd,x);
plot(x,cdf_normal,'LineWidth',4)

채택된 답변

Teja Muppirala
Teja Muppirala 2013년 5월 29일
Alternatively, you can use ICDF directly on the probability distribution object
icdf(pd,[0.2 0.466])

추가 답변 (2개)

Image Analyst
Image Analyst 2013년 5월 29일
편집: Image Analyst 2013년 5월 29일
If "the_Y_Value" is the y value you're looking at, and xValue is the x location where y first exceeds "the_Y_Value", then:
xIndex = find(cdf_normal >= the_Y_Value, 1, 'first');
xValue = x(xIndex);

Brett Hoover
Brett Hoover 2018년 7월 26일
Kinda surprised that nobody suggested 1-D interpolation:
target_value = interp1(cdf_probs,cdf_values,target_prob)
  댓글 수: 1
Image Analyst
Image Analyst 2018년 7월 27일
Because when Aaron said "how can I find the data point..." I assumed he wanted a data point that was in his existing set of data. Your code would give a point not in the data. It's probably a more accurate estimate but wouldn't be one of his data points -- it would be between two of them. However, maybe that's what he really meant.

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

Community Treasure Hunt

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

Start Hunting!

Translated by