2015-07-19 16 views
1

我想繪製一個逆gamma(0.001, 0.001)的ksdensity,但該圖只有一個點。我用的命令是我不能在matlab中繪製反伽馬(0.001,0.001)的核密度估計

alpha1 = 0.001; 
    beta1 = 0.001; 
    n = 1e+5; 
    r=1./gamrnd(alpha1,1/beta1,n,1); 
    [f,xi] = ksdensity(r); 
    plot(xi,f,'--m'); 

f的第一項是實數,其餘均爲NaNxi的第一項是實數,其他所有項均爲Inf

你能幫我解決這個問題嗎?

非常感謝。

回答

1

您是否看過r中生成的數據?我幾乎有49%的時間值Inf。看起來,您選擇的參數的Gamma分佈的許多值都是0,或者實際上很小,以至於無法用Matlab的標準雙精度數字格式表示(最小可能值爲2.225×10^-308)。

如果看看Wikipedia page爲逆伽馬分佈,你將看到的是,平均不用於α-< = 1所定義和方差不用於α-< = 2,等等。根據Wolfram Alpha,模式定義你的分佈是0.000999001,而中位數是1.90687·10^298(只有幾個數量級,低於最大可能的雙倍值,1.797·10^308!)。

圍繞模式

x = 0.0001:0.0001:0.1; 
plot(x, beta1^alpha1/gamma(alpha1) .* x .^ -(alpha1 + 1) .* exp(- beta1 ./ x)) 

密度看起來像這樣

但這僅覆蓋總分佈(第一百分位數是41.2211)的一小部分。

所以這裏的問題不是核密度估計,而是你看到的分佈具有極端特性,這使得難以從分析公式中繪製密度,更不用說從模擬隨機數中估計密度。

+0

非常感謝。你不知道你是如何幫助我的。 –

+0

@ F.F。,很高興我能幫上忙! :-) –