来自缩放的逆卡方分布的样本

时间:2013-12-09 20:28:15

标签: r distribution geor

我想在R中生成sa scaled-inv-chisquared分布。我知道geoR有一个R函数用于生成它。但我想使用伽玛分布来生成这个。 我认为这两个是等价的:

X ~ rinvchisq(100,  df=d, scale=s)
1/X ~ rgamma(100, shape=d/2, scale=2/(d*s))
不是吗?由于极端值,是否会出现任何数值问题?

1 个答案:

答案 0 :(得分:3)

更具体地说,您需要X <- rinvchisq(...)X <- 1/rgamma(...)~表示法在WinBUGS等程序中以及统计表示法中以这种方式工作,但在R中则不行。如果您查看geoR::rinvchisq的代码,相关部分就是

return((df * scale)/rchisq(n, df = df))

所以,如果您在获取非常大或小的卡方偏差的倒数时遇到问题,那么无论如何都会遇到麻烦(尽管rchisq在内部使用.External(C_rchisq, n, df),这会落到C代码中,大概是为了在这种特殊情况下提高效率,而不是叫rgamma)。如果我是你,我会继续加上一些测试样本的密度,以确保我没有搞砸算术或参数化......

对于它的价值而言,各种软件包中还有rinvgamma()个函数(library(sos); findFn("rinvgamma")