2013-12-12 50 views
1

我使用matlab來估計概率密度函數(pdf)。matlab pdf估計(ksdensity)不起作用

的代碼是這樣的

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

和圖片這樣

Plot result

你看,估計是不工作的。

那麼這裏有什麼問題?順便說一句,在matlab中還有其他的pdf估計方法嗎?

回答

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) 

enter image description here

+0

這是驚人的,非常有助於弄清楚我在想什麼。 – SolessChong

1

ksdensity爲您提供輸入值的概率分佈(默認爲100分)。您的輸入值a1 + a2的值介於0和1.5之間,其中大部分接近0,較小部分接近1.5。你看到的第二個情節反映了這種分佈。

如果你想看到兩個類似的情節,把作爲輸入ksdensity與集中在靠近-1元素的向量和1

+0

你還要點。 – SolessChong