0

我有一组经验数据(假设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');

我认为现在是在 ydatax的间隔中 查找位置xdata以及随后在 ydata 中查找位置的情况。

例如

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?
4

1 回答 1

1

有一种更优雅的方法可以使用bsxfun. 此外,您可以使用ecdf而不是计算经验 CDF cdfplot(除非您确实需要绘图):

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);
于 2016-05-22T17:52:48.080 回答