In MATLAB (cumulative distribution function), how can I find the corresponding data point (Y) for any chosen cumulative probability?
19 次查看(过去 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)
0 个评论
采纳的回答
Teja Muppirala
2013-5-29
Alternatively, you can use ICDF directly on the probability distribution object
icdf(pd,[0.2 0.466])
0 个评论
更多回答(2 个)
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);
0 个评论
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
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!