web-dev-qa-db-ja.com

MatLabで確率密度関数を描画する方法は?

x = [1 2 3 3 4]
cdfplot(x)

グーグルした後、上記のコードがMatlabで累積分布関数を描画することがわかりました。
確率密度関数を描く簡単な方法はありますか?

明確にするために。 x軸が均等に分布しているグラフが必要です。そして、私はそれが棒グラフのように見えないことを望みます。 (私は何百万もの整数を持っているでしょう)
申し訳ありませんが、もう一度更新してください。私のデータは整数ですが、実際には時間を表します(まったく同じ値でいくつかの非常に高いピークが予想されますが、他の値は離散していないように見えるはずです)。私は実際、これが本質的に離散整数ではないかどうか疑問に思い始めています。 CDFは間違いなく機能しますが、PDFになると、予想よりも複雑に見えます。

6
Haozhun

関数 hist を使用して、整数の離散確率分布を生成できます。

data = [1 2 3 3 4];           %# Sample data
xRange = 0:10;                %# Range of integers to compute a probability for
N = hist(data,xRange);        %# Bin the data
plot(xRange,N./numel(data));  %# Plot the probabilities for each integer
xlabel('Integer value');
ylabel('Probability');

そして、これが結果のプロットです:

enter image description here


更新:

新しいバージョンのMATLABでは、 hist 関数は推奨されなくなりました。代わりに、 histcounts 関数を次のように使用して、上記と同じ図を作成できます。

data = [1 2 3 3 4];
N = histcounts(data, 'BinLimits', [0 10], 'BinMethod', 'integers', 'Normalization', 'pdf');
plot(N);
xlabel('Integer value');
ylabel('Probability');
7
gnovice

連続分布関数が必要な場合は、これを試してください。

x = [1 2 3 3 4]
subplot(2,1,1)
ksdensity(x)
axis([-4 8 0 0.4])

subplot(2,1,2)
cdfplot(x)
grid off
axis([-4 8 0 1])
title('')

これを出力します。 enter image description here

累積分布関数が下部にあり、カーネル密度推定が上部にあります。

7
FriskyGrub

matlabヘルプに「ksdensity」と入力すると、PDFの連続形式を提供する関数が見つかります。私はこれがまさにあなたが探しているものだと思います。

2
Ali

ksdensity(x)によって取得されたsmooth PDFに加えて、ksdensity(x,'function','cdf')を使用して滑らかなCDFプロットをプロットすることもできます。

enter image description here

0
user2459099