我无法在matlab中绘制反伽马(0.001,0.001)的核密度估计

时间:2015-07-19 19:03:38

标签: matlab inverse gamma-distribution

我试图绘制一个反向gamma(0.001, 0.001)的ksdensity,但该情节只有一个点。我使用的命令是

 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 个答案:

答案 0 :(得分:1)

您是否查看了r中生成的数据?我得到的值几乎有49%Inf。看来,您选择的参数的Gamma分布的许多值都是0,或者实际上很小,以至于它们无法用Matlab的标准双精度数值格式表示(最小可能值为2.225·10 ^ -308)。

如果您查看反向Gamma分布的Wikipedia page,您会看到没有为alpha< = 1定义平均值,并且没有为alpha< = 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))

看起来像这样

但这仅占总分布的一小部分(第1百分位数为41.2211)。

所以这里的问题不是核密度估计,而是你所看到的分布具有极端的性质,这使得很难从分析公式中绘制密度,更不用说从模拟的随机数中估算它了。