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

18 vues (au cours des 30 derniers jours)
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)

Réponse acceptée

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

Plus de réponses (2)

Image Analyst
Image Analyst le 29 Mai 2013
Modifié(e) : Image Analyst le 29 Mai 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
Brett Hoover le 26 Juil 2018
Kinda surprised that nobody suggested 1-D interpolation:
target_value = interp1(cdf_probs,cdf_values,target_prob)
  1 commentaire
Image Analyst
Image Analyst le 27 Juil 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.

Connectez-vous pour commenter.

Community Treasure Hunt

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

Start Hunting!

Translated by