1

我正在尝试绘制一个 Inverse 的 ksdensity,gamma(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是实数,其他都是NaN。的第一项xi是实数,其他都是Inf

你能帮我解决这个问题吗?

非常感谢。

4

1 回答 1

1

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

如果您查看逆 Gamma 分布的Wikipedia 页面,您会看到没有为 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))

看起来像这样

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

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

于 2015-07-19T19:34:19.800 回答