我正在使用matlab估算概率密度函数(pdf)。
代码就像这样
xi = -2:0.1:2;
a1 = normpdf(xi, 1, 0.3);
a2 = normpdf(xi, -1, 0.3);
subplot(211);
plot(xi, a1+a2);
[f, xs] = ksdensity(a1+a2);
subplot(212);
plot(xs, f);
和这样的照片
您认为估算根本不起作用。
那么这里有什么问题? BTW还有matlab中的其他pdf估算方法吗?
答案 0 :(得分:3)
这更接近您的期望吗?
ksdensity
函数需要来自分布的样本向量,而您正在为它提供概率密度函数的值。
>> xi = -3:0.1:3;
>> p1 = normpdf(xi, 1, 0.3);
>> p2 = normpdf(xi,-1, 0.3);
>> subplot(211)
>> plot(xi, 0.5*p1+0.5*p2)
>> a1 = 1 + 0.3 * randn(10000,1); % construct the same distribution
>> a2 = -1 + 0.3 * randn(10000,1); % construct the same distribution
>> [f, xs] = ksdensity([a1;a2]);
>> subplot(212)
>> plot(xs, f)
答案 1 :(得分:1)
ksdensity为您提供输入值的概率分布(默认为100个点)。您的输入值a1 + a2的值介于0和1.5之间,其中大部分接近0,较小部分接近1.5。您看到的第二个图表反映了这种分布。
如果你想看到两个相似的图,可以将一个元素集中在-1和1附近的向量作为ksdensity的输入。