我想在R中生成scaled-inv-chisquared分布。我知道geoR有一个R函数。但是我想用伽马分布来产生这个。我认为这两个是等价的:
X ~ rinvchisq(100, df=d, scale=s)
1/X ~ rgamma(100, shape=d/2, scale=2/(d*s))难到不是么?由于极值的原因,会有任何数值问题吗?
发布于 2013-12-10 06:02:25
更具体地说,您将需要X <- rinvchisq(...)和X <- 1/rgamma(...) ( ~表示法在WinBUGS等程序和统计表示法中以这种方式工作,但在R中不是这样)。如果您查看geoR::rinvchisq的代码,相关部分只是
return((df * scale)/rchisq(n, df = df))因此,如果你在取非常大或很小的卡方差的倒数时遇到问题,你无论如何都会有麻烦的(尽管rchisq在内部使用了.External(C_rchisq, n, df),这在这种特殊情况下可能是为了提高效率,而不是调用rgamma)。如果我是你,我会继续叠加一些测试样本的密度,以确保我没有在某个地方搞砸了算术或参数化……
值得注意的是,在各种包(library(sos); findFn("rinvgamma"))中也有rinvgamma()函数
https://stackoverflow.com/questions/20480091
复制相似问题