2

パラメータ(形状)アルファ= 3457および(レート)ベータ= 84のガンマ密度関数をプロットしようとしています。私がこれを使用してこれを行う場合:

curve(dgamma(x,shape=3457,rate=84),from=35,to=50,xlab="posterior theta",ylab="density")

すべてがうまくいき、〜41を中心とした密度が得られます. 一方、最初に密度を次のように構築した場合:

para_density = function(x,s=3457,r=84,N) ((r^s)/(gamma(s)))*x^(s-1)*exp(-r*x)

そしてそれをプロットします:

curve(para_density(x,s=3457,r=84,N=N),from=0,to=100)

R は、gamma(s) が Inf を返すことを教えてくれました。

では、plot 関数と dgamma 関数を使用して同一のパラメーター化でプロットできるのはなぜですか?

よろしくお願いします。

4

1 に答える 1

1

では、対数を使用してください

コード (未テスト!)

mygamma <- function(x, s, r) {
    l <- s*log(r) - lgamma(s) + (s-1.0)*log(x) - x*r
    exp(l)
}

アップデート

はい、動作します

library(ggplot2)

p <- ggplot(data = data.frame(x = 0), mapping = aes(x = x))
p <- p + stat_function(fun = function(x) dgamma(x,shape=3457,rate=84))
p <- p + stat_function(fun = function(x) mygamma(x,s=3457,r=84))
p <- p + xlim(35.0, 50.0)
print(p)

ここに画像の説明を入力

于 2016-02-18T18:25:26.117 に答える