【问题标题】:Testing a vector for gamma distribution测试伽马分布的向量
【发布时间】:2015-08-05 19:47:03
【问题描述】:

我对某个向量有疑问。我想知道它是否是伽马分布的,以及(如果是的话)参数(形状、速率)是什么。我的向量有 400 个条目,但让我们以例如

x <- c(45.94,31.04,17.49,9.81,6.34,4.18,2.93,2.01,1.61,1.27,1.04,0.809)

我读到了一些关于 fitdistr() 的内容。但我不太明白它实际上是做什么的!我用我的真实(长)向量尝试了以下内容:

 fitdistr(x, "gamma")
  shape         rate    
 0.167498708   0.519997226 
(0.008849548) (0.068359517)
Warning messages:
1: In densfun(x, parm[1], parm[2], ...) : NaNs wurden erzeugt
2: In densfun(x, parm[1], parm[2], ...) : NaNs wurden erzeugt
3: In densfun(x, parm[1], parm[2], ...) : NaNs wurden erzeugt
4: In densfun(x, parm[1], parm[2], ...) : NaNs wurden erzeugt
5: In densfun(x, parm[1], parm[2], ...) : NaNs wurden erzeugt
6: In densfun(x, parm[1], parm[2], ...) : NaNs wurden erzeugt
7: In densfun(x, parm[1], parm[2], ...) : NaNs wurden erzeugt

输出是什么意思?这些是我的拟合参数吗?我对它们进行了测试,但 KS-Test 给了我一个否定的结果:

> ks.test(anzahl, "pgamma", 0.167498708, 0.519997226)

One-sample Kolmogorov-Smirnov test

data:  anzahl
D = 0.3388, p-value < 2.2e-16
alternative hypothesis: two-sided

那么您能否告诉我如何确定我的向量是否是伽马分布的以及参数是什么?

【问题讨论】:

  • 尝试在您的数据上使用这些参数绘制一条曲线,看看它的外观。您可能可以忽略警告,在不指定参数范围的情况下拟合最大似然时它们很常见
  • 首先,这在stats.stackexchange.com 中可能会更好——该论坛可能能够更好地解决问题的非编程部分。也就是说,我认为这些警告很可能是由 shape=1 周围的近乎奇异的行为引起的。如果您的数据有许多可能会出现问题的小值。
  • 我试过了。不知何故看起来很奇怪 :D 缩放不合适。这是正确的方法吗?我仍然不知道如何确定我的向量是否是伽马分布的
  • 我刚刚意识到,我可能有缩放问题。当我在绘图中看到正确的曲线时,x 轴从 0 变为 100,但 y 轴从 0 变为 50,因为我的第一个数字是 46、31 等。而伽玛分布的数字从 0 变为 0 ,1 也许。那么,除了我的问题之外,我该如何管理缩放呢??

标签: r vector gamma-distribution fitdistrplus


【解决方案1】:

嗯,我在处理一些伽马分布数据时遇到了同样的问题。

可能发生的情况是,当您调用 ks.test () 函数时,伽马分布的默认参数是按该顺序排列的形状和比例,但您传递的是形状和速率。请尝试以下操作:

ks.test (x, "pgamma", shape=0.167498708, rate=0.519997226)

如果这对您没有帮助,请尝试 Cross validated 中描述的 Kolmogorov-Smirnov 测试模拟程序。

最后,我必须说,如果我得到你的向量x 并运行fitdistr(),我得到shape=0.7177rate=0.0692,它们给出KS=0.18302p-value=0.7527。所以你的fitdistr(x, "gamma")有问题。

【讨论】:

    【解决方案2】:

    看看你的数据图表。由于它只有 400 个条目,因此您最好尝试使用 =gammadist() 而不是使用 R 将其放入 MS excel 中。如果您的图形类似于 gamma-dist 曲线(只需谷歌曲线图像并检查),您可以尝试将数据拟合到 gamma 曲线...fitdistr() 的上述结果告诉您,最适合您的数据的是参数 alpha = 0.167498708 和 beta = 0.519997226 的 gamma 函数曲线。但是 ks 测试是说它非常不适合。我想图形观察会更好地告诉你。

    【讨论】:

      最近更新 更多