我有一组经验数据(假设x=normrnd(10,3,1000,1);
),其累积分布函数如下:
我还有一组数据x1=[11,11.1,10.1]
。如果它们来自分布x1
,我想找到x
的值的概率。如果它是一个连续的已知函数,我可以准确地评估它,但我想从我拥有的数据中做到这一点。有什么想法吗?
我会在x轴上找到该值并追踪到该线并穿过F(x)轴(见图1)。
修改
size(x1)
10,0000
所以我现在已经找到了如何获得绘制F(x)
的数据handles=cdfplot(X);
xdata=get(handles,'XData');
ydata=get(handles,'YData');
我认为现在可以在x
的某个区间内查找xdata
的位置,然后在ydata中找到该位置。
e.g。
for i=1:length(x)
for j=1:length(xdata)
if x(i,1)<=xdata(jj,1)
X(i)=xdata(jj,1);
end
end
end
Y=ydata(X);
Is this the most elegant way?
答案 0 :(得分:1)
使用bsxfun
有一种更优雅的方法。此外,您可以使用ecdf
而不是cdfplot
计算经验CDF(除非您确实需要该图):
x = normrnd(10,3,1000,1);
[f_data, x_data] = ecdf(x);
x1 = [11, 11.1, 10.1];
idx = sum(bsxfun(@le, x_data(:)', x1(:)), 2);
y1 = f_data(idx);