我试图绘制一个反向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
的第一个字词是实数,其他所有字符都是NaN
。 xi
的第一个字词是实数,其他所有字符都是Inf
。
请你帮我解决这个问题。
非常感谢。
答案 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)。
所以这里的问题不是核密度估计,而是你所看到的分布具有极端的性质,这使得很难从分析公式中绘制密度,更不用说从模拟的随机数中估算它了。