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');

x今では、間隔内 の場所を見つけ、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 に答える