In MATLAB (cumulative distribution function), how can I find the corresponding data point (Y) for any chosen cumulative probability?
18 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Aaron
el 29 de Mayo de 2013
Comentada: Image Analyst
el 27 de Jul. de 2018
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)
0 comentarios
Respuesta aceptada
Teja Muppirala
el 29 de Mayo de 2013
Alternatively, you can use ICDF directly on the probability distribution object
icdf(pd,[0.2 0.466])
0 comentarios
Más respuestas (2)
Image Analyst
el 29 de Mayo de 2013
Editada: Image Analyst
el 29 de Mayo de 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);
0 comentarios
Brett Hoover
el 26 de Jul. de 2018
Kinda surprised that nobody suggested 1-D interpolation:
target_value = interp1(cdf_probs,cdf_values,target_prob)
1 comentario
Image Analyst
el 27 de Jul. de 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.
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!