So-net無料ブログ作成

R: BayesianToolsをためす(2) [統計]

前回のつづきです。今度はZero-Infrated Poissonモデル。

Rコード。

library(BayesianTools)

set.seed(123)

data <- read.csv("https://raw.githubusercontent.com/ito4303/naro_toukei/master/example4.csv")

N <- nrow(data)
Y <- data$Num
X <- data$Light

loglik <- function(param) {
  # param[1]: inclusion probability
  # param[2]: intercept of Poisson regression
  # param[3]: slope of Poisson regression
  ll <- 0
  lambda <- exp(param[2] + param[3] * X)
  for (i in 1:N) {
    if (Y[i] > 0) {
      ll <- ll +
        dbinom(1, 1, param[1], log = TRUE) +
        dpois(Y[i], lambda[i], log = TRUE)
    } else {
      p1 <- dbinom(0, 1, param[1])
      p2 <- dbinom(1, 1, param[1]) * dpois(0, lambda[i])
      ll <- ll + log(p1 + p2)
    }
  }
  return(ll)
}

setup <- createBayesianSetup(loglik, prior = NULL,
                             lower = c(0, -100, -100),
                             upper = c(1, 100, 100))
out <- runMCMC(setup, sampler = "DEzs",
               settings = list(iterations = 61500,
                               burnin = 1500,
                               thin = 5))

log(p1 + p2)のところは、logSumExp()をつかうとなぜかうまくいきませんでした。

結果です。

> gelmanDiagnostics(out)
Potential scale reduction factors:

      Point est. Upper C.I.
par 1          1       1.00
par 2          1       1.01
par 3          1       1.00

Multivariate psrf

1
> summary(out)
# # # # # # # # # # # # # # # # # # # # # # # # # 
## MCMC chain summary ## 
# # # # # # # # # # # # # # # # # # # # # # # # # 
 
# MCMC sampler:  DEzs 
# Nr. Chains:  3 
# Iterations per chain:  4001 
# Rejection rate:  0.204 
# Effective sample size:  6734 
# Runtime:  15.16  sec. 
 
# Parameter       MAP      2.5%    median   97.5% 
#  par 1 :        0.402    0.247    0.424    0.646 
#  par 2 :       -0.016   -1.276   -0.071    1.020 
#  par 3 :        0.505   -0.333    0.498    1.290 

## DIC:  4.429086e+40 
## Convergence 
 Gelman Rubin multivariate psrf:   
 
## Correlations 
       par 1  par 2  par 3
par 1  1.000 -0.092  0.014
par 2 -0.092  1.000 -0.309
par 3  0.014 -0.309  1.000

タグ:R MCMC
nice!(1)  コメント(0) 
共通テーマ:日記・雑感

nice! 1

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

Facebook コメント