2013-08-23 22 views

Odpowiedz

6

Chociaż @Dason i @Stephane już zauważyli, że Twój podejście to jest ważne, istnieje kilka pakietów w R, które to zrobić (znaleziono googlowania dla r inverse gamma:

Patrz także stronę wikipedia dla gamma distribution i inverse gamma distribution dla funkcji gęstości prawdopodobieństwa obu rozkładów:

enter image description here

do dystrybucji gamma w stosunku:

enter image description here

dla osób odwrotna gamma.

+1

Mimo, że parametry nie zostały poprawnie ustawione, nie całkiem rozumiem, dlaczego mówisz "nie", ponieważ ich metoda jest jednym ze sposobów generowania odwrotnej gamma ... – Dason

+0

Zmieniono moją odpowiedź na mniej restrykcyjną. @Dason po zrobieniu trochę badań wydawało się, że dwie dystrybucje są dość wyraźne, ale ja się poprawiam. –

-1

Poniższy kod jest przykładem do porównania symulacji z odwrotnej gammy z różnych pakietów R @ user2005253 i @Stephane.

@Paul Hiemstra nie jestem pewien co do ringvamma {MCMCpack}

# double check implementations from various packages 
library(ggplot2) 
alpha = 1 
rate = 0.5 

# stats library ---------------------------------- 
library(stats) 
x.base<- 1/rgamma(10000, shape = alpha, rate = rate) 
x11() 
p.try0<- ggplot(data.frame(x = x.base), aes(x=x)) + geom_density() + 
ggtitle(paste("Stats package: shape", alpha, "rate ", rate)) + xlim(c(0, 3)) 
p.try0 

# invgamma library ------------------------------- 
library(invgamma) 
sims.1<- rinvgamma(10000, shape = alpha, rate = rate) 
p.try1<- ggplot(data.frame(x = sims.1), aes(x=x)) + geom_density() + 
    ggtitle(paste("Package (invgamma) shape", alpha, " rate ", rate, sep = ""))+ 
    xlim(c(0, 3)) 
x11() 
p.try1 

detach("package:invgamma", unload = TRUE) 

# MCMCpack library ------------------------------- 
library(MCMCpack) # no rate argument - this works only on shape and scale. 
        #That's ok since scale = 1/rate 
sims.2<- rinvgamma(10000, shape = alpha, scale = 1/rate) 

p.try2<- ggplot(data.frame(x = sims.2), aes(x=x)) + geom_density() + 
    ggtitle(paste("Package MCMCpack: shape", alpha, " scale", 1/rate, sep = "")) + 
    xlim(c(0, 3)) 

x11() 
p.try2 

# Implementation of rinvgamma incorrect for MCMC pack? Because this works with 
sims.3<- rinvgamma(10000, shape = alpha, scale = rate) 

p.try3<- ggplot(data.frame(x = sims.2), aes(x=x)) + geom_density() + 
    ggtitle(paste("again MCMCpack: here scale = rate ???")) + xlim(c(0, 3)) 

x11() 
p.try3