[R] getting started on Bayesian analysis

Jari Oksanen jarioksa at sun3.oulu.fi
Wed Sep 15 09:40:52 CEST 2004


On Wed, 2004-09-15 at 03:27, HALL, MARK E wrote:
>   I've found 
>   
> Bayesian Methods: A Social and Behavioral Sciences Approach
> by Jeff Gill 
> 
> useful as an introduction.  The examples are written in R and S with generalized scripts for doing 
> a variety of problems.  (Though I never got change-point analysis to successfully in R.)
> 
Change point analysis? I haven't seen the book, but I read lecture
handouts of one Bayesian course over here in Finland (Antti Penttinen,
JyvÀskylÀ), and translated his example to R during one (rare) warm
summer day in a garden. So do you mean this (binary case):

> source("/mnt/flash/cb.update.R")
> cb.update
function (y, A=1, B=1, C=1, D=1, N=1200, burnin=200)
{
    n <- length(y)
    lambda <- numeric(N)
    mu <- numeric(N)
    k <- numeric(N)
    lambda[1] <- A/(A+B)
    mu[1] <- C/(C+D)
    k[1] <- n/2
    sn <- sum(y)
 
    for (i in 2:N) {
        kold <- k[i-1]
        sk <- sum(y[1:kold])
        lambda[i] <- rbeta(1, A+sk, B + kold - sk)
        mu[i] <- rbeta(1, C + sn - sk, D + n - sn + sk - kold  )
        knew <- sample(n-1, 1)
        sknew <- sum(y[1:knew])
        r <- (sknew - sk) *
            (log(lambda[i])-log(mu[i]))-(knew-kold)*(lambda[i]-mu[i])
        if(min(0,r) > log(runif(1))) k[i] <- knew
        else k[i] <- k[i-1]
    }
    out <- cbind(lambda, mu, k)
    out[(burnin+1):N, ]
}
> y <- c(rbinom(60, 1, 0.8), rbinom(40, 1, 0.3))
> uh <- cb.update(y, N=5200)
> colMeans(uh)
    lambda         mu          k
 0.8189303  0.4169367 59.0770000
> mean(y[1:60])
[1] 0.7833333
> mean(y[41:100])
[1] 0.45
> plot(density(uh[,1]))
> plot(density(uh[,2]))
> plot(table(uh[,3]), type="h")

This was off-topic. So something about business: isn't the (Win)BUGS
author working with a R port?

cheers, jari oksanen
-- 
Jari Oksanen -- Dept Biology, Univ Oulu, 90014 Oulu, Finland
email jari.oksanen at oulu.fi, homepage http://cc.oulu.fi/~jarioksa/




More information about the R-help mailing list