x = [1 2 3 3 4]
cdfplot(x)
グーグルした後、上記のコードがMatlabで累積分布関数を描画することがわかりました。
確率密度関数を描く簡単な方法はありますか?
明確にするために。 x軸が均等に分布しているグラフが必要です。そして、私はそれが棒グラフのように見えないことを望みます。 (私は何百万もの整数を持っているでしょう)
申し訳ありませんが、もう一度更新してください。私のデータは整数ですが、実際には時間を表します(まったく同じ値でいくつかの非常に高いピークが予想されますが、他の値は離散していないように見えるはずです)。私は実際、これが本質的に離散整数ではないかどうか疑問に思い始めています。 CDFは間違いなく機能しますが、PDFになると、予想よりも複雑に見えます。
関数 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');
そして、これが結果のプロットです:
新しいバージョンの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');
連続分布関数が必要な場合は、これを試してください。
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('')
これを出力します。
累積分布関数が下部にあり、カーネル密度推定が上部にあります。
matlabヘルプに「ksdensity」と入力すると、PDFの連続形式を提供する関数が見つかります。私はこれがまさにあなたが探しているものだと思います。
ksdensity(x)
によって取得されたsmooth PDFに加えて、ksdensity(x,'function','cdf')
を使用して滑らかなCDFプロットをプロットすることもできます。