view latex/scripts/simulation.R @ 1:6531169e6866

latex files
author Jiajie Dai <daijiajie1@gmail.com>
date Tue, 21 Feb 2017 11:43:03 +0000
parents
children
line wrap: on
line source
mu <- 0.85

N <- 75 # number of simulated notes per "song"
nSong <- 1500 # number of songs
n <- 50 # distance between note samples, i.e. we want Var[p_{i+n}-p_i]

burnin <- 0

sig2 <- 0.0786

endnotes <- mat.or.vec(nSong,1)

# simulate performance according to model
for (iSong in 1:nSong)
{
    track <- mat.or.vec(N,1)
    track[1] <- c(rnorm(1, 0, sqrt(sig2)))
    for (ii in 2:N)
    {
        track[ii] <- track[ii-1] + rnorm(1, 0, sqrt(sig2)) * (1-mu)
    }
    # trackdiff <- track[(n+1+burnin):N]-track[(1+burnin):(N-n)]
    endnotes[iSong] <- mean(track[n+1])
}
# calculate lots of differences between notes spaced n notes apart
# -- I start after burnin notes, so that I don't have to assume deterministic starting note


# observed variance of the difference, i.e. Var[p_50-p_0]
vd <- var(endnotes)

# try to recover mu
mu.est.1 <- 1-sqrt((vd-sig2)/((n-1)*sig2))
mu.est.2 <- 1-sqrt(vd/((n-1)*sig2))

cat(sprintf("True mu: %0.3f.\n", mu))
cat(sprintf("Number of notes simulated: %i (burn-in is %i notes).\n", N, burnin))
cat(sprintf("Estimate mu as derived from intonation_model-5.pdf: %0.3f.\n", mu.est.1))
cat(sprintf("Without additional variance term: %0.3f\n", mu.est.2))