⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mcmcdynamicei.r

📁 使用R语言的马尔科夫链蒙特卡洛模拟(MCMC)源代码程序。
💻 R
字号:
# sample from the posterior of Quinn's dynamic ecological inference model# in R using linked C++ code in Scythe## KQ 10/25/2002"MCMCdynamicEI" <-  function(r0, r1, c0, c1, burnin=5000, mcmc=50000,           thin=1, verbose=0, seed=NA,           W=0, a0=0.825, b0=0.0105, a1=0.825,           b1=0.0105, ...){        # Error checking    if (length(r0) != length(r1)){      cat("length(r0) != length(r1).\n")      stop("Please check data and try MCMCdynamicEI() again.\n")    }    if (length(r0) != length(c0)){      cat("length(r0) != length(c0).\n")      stop("Please check data and try MCMCdynamicEI() again.\n")    }    if (length(r0) != length(c1)){      cat("length(r0) != length(c1).\n")      stop("Please check data and try MCMCdynamicEI() again.\n")    }    if (length(r1) != length(c0)){      cat("length(r1) != length(c0).\n")      stop("Please check data and try MCMCdynamicEI() again.\n")    }    if (length(r1) != length(c1)){      cat("length(r1) != length(c1).\n")      stop("Please check data and try MCMCdynamicEI() again.\n")    }    if (length(c0) != length(c1)){      cat("length(c0) != length(c1).\n")      stop("Please check data and try MCMCdynamicEI() again.\n")    }    if (min((r0+r1) == (c0+c1))==0){      cat("Rows and columns do not sum to same thing.\n")      stop("Please check data and try MCMCdynamicEI() again.\n")    }    check.mcmc.parameters(burnin, mcmc, thin)       # seeds    seeds <- form.seeds(seed)     lecuyer <- seeds[[1]]    seed.array <- seeds[[2]]    lecuyer.stream <- seeds[[3]]    if (a0 <= 0 ){      cat("Parameter a0 <= 0.\n")      stop("Please respecify and try MCMCdynamicEI() again.\n")    }        if (b0 <= 0 ){      cat("Parameter b0 <= 0.\n")      stop("Please respecify and try MCMCdynamicEI() again.\n")    }        if (a1 <= 0 ){      cat("Parameter a1 <= 0.\n")      stop("Please respecify and try MCMCdynamicEI() again.\n")    }        if (b1 <= 0 ){      cat("Parameter b1 <= 0.\n")      stop("Please respecify and try MCMCdynamicEI() again.\n")    }        ntables = length(r0)        if (W==0){ # construct weight matrix for a simple random walk assuming               # tables are temporally ordered and 1 time unit apart      W <- matrix(0, ntables, ntables)      for (i in 2:(ntables)){        W[i,i-1] <- 1        W[i-1,i] <- 1      }    }    # setup matrix to hold output from sampling    sample <- matrix(0, mcmc/thin, ntables*2+2)    # call C++ code to do the sampling    C.sample <- .C("dynamicEI",                   samdata = as.double(sample),                   samrow = as.integer(nrow(sample)),                   samcol = as.integer(ncol(sample)),                   r0 = as.double(r0),                   r1 = as.double(r1),                   c0 = as.double(c0),                   c1 = as.double(c1),                   ntables = as.integer(ntables),                   burnin = as.integer(burnin),                   mcmc = as.integer(mcmc),                   thin = as.integer(thin),                   W = as.double(W),                   a0 = as.double(a0),                   b0 = as.double(b0),                   a1 = as.double(a1),                   b1 = as.double(b1),                   verbose = as.integer(verbose),                   lecuyer = as.integer(lecuyer),                   seedarray = as.integer(seed.array),                   lecuyerstream = as.integer(lecuyer.stream),                   PACKAGE="MCMCpack"                   )        sample <- matrix(C.sample$samdata, C.sample$samrow, C.sample$samcol,                     byrow=TRUE)    output <- mcmc(data=sample, start=(burnin+1), end=burnin+mcmc, thin=thin)    p0names <- paste("p0table", 1:ntables, sep="")    p1names <- paste("p1table", 1:ntables, sep="")    varnames(output) <- c(p0names, p1names, "sigma^2_0", "sigma^2_1")        attr(output, "title") <- "MCMCpack Quinn's Dynamic EI Model Posterior Sample"             return(output)      }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -