2013-08-23 24 views

Trả lời

6

Mặc dù @Dason và @Stephane đã nhận xét rằng bạn cách tiếp cận có giá trị, có một số gói trong R mà làm điều này (tìm thấy googling cho r inverse gamma:

cũng Xem trang wikipedia cho gamma distributioninverse gamma distribution cho hàm mật độ xác suất của cả các bản phân phối:

enter image description here

cho việc phân phối gamma so:

enter image description here

cho gamma nghịch đảo.

+1

Mặc dù họ không hoàn toàn nhận được các thông số đúng Tôi không thấy lý do tại sao bạn nói "không" kể từ khi phương pháp của họ là một cách để tạo ra một gamma nghịch đảo ... – Dason

+0

Chỉnh sửa câu trả lời của tôi ít nghiêm ngặt hơn. @ Dason sau khi thực hiện một chút nghiên cứu có vẻ như hai bản phân phối khá khác biệt, nhưng tôi đã sửa chữa. –

-1

Mã dưới đây là ví dụ để so sánh các mô phỏng từ gamma nghịch đảo từ các gói R @ user2005253 và @Stephane.

@ Paul Hiemstra Tôi không chắc chắn về 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 
Các vấn đề liên quan