【问题标题】:Samples from scaled inverse chisquare distribution来自缩放逆卡方分布的样本
【发布时间】:2013-12-09 20:28:15
【问题描述】:

我想在 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))

不是吗?由于极端值,会出现任何数值问题吗?

【问题讨论】:

  • 维基百科对此有很好的讨论
  • 您关心什么样的问题? chi^2 分布作为 1/X 的分母显然表现得并不差。众所周知,chi^2 是伽马的一个特例。

标签: r distribution geor


【解决方案1】:

更具体地说,您需要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"))

【讨论】:

  • +1 我想知道 OP 是否打算将 ~ 作为“分发为”,但这里使用了有点不幸的代码标记。 1/X 行暗示了这一点,因为它也不是有效的错误代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-04
  • 1970-01-01
  • 2019-10-02
  • 2018-08-25
  • 2013-04-20
相关资源
最近更新 更多