In MATLAB (cumulative distribution function), how can I find the corresponding data point (Y) for any chosen cumulative probability?
Show older comments
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)

Accepted Answer
More Answers (2)
Image Analyst
on 29 May 2013
Edited: Image Analyst
on 29 May 2013
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
on 26 Jul 2018
0 votes
Kinda surprised that nobody suggested 1-D interpolation:
target_value = interp1(cdf_probs,cdf_values,target_prob)
1 Comment
Image Analyst
on 27 Jul 2018
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.
Categories
Find more on Noncentral t Distribution in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!