title: "Nimble Book"
output: html_document
knitr::opts_chunk$set(echo = TRUE,
eval = FALSE)
2.3
- histogram
mcmc.output %>%
as_tibble() %>%
ggplot() +
geom_histogram(aes(x = chain1[,"theta"]), color = "white") +
labs(x = "survival probability")
Je maîtrise pas vraiment les subtilités des tibbles mais j'ai été surpris qu'on puisse y mettre une liste. J'ai rapidement essayé et dès qu'on monitor plus d'une variable ça fonctionne toujours mais le tibble a des comportements étranges:
mcmc.output<-list(chain1 = matrix(ncol = 2, data = rnorm(8000)),
chain2 = matrix(ncol = 2, data = rnorm(8000)))
colnames(mcmc.output$chain1) <- c("theta","theta2")
colnames(mcmc.output$chain2) <- c("theta","theta2")
tst <- as_tibble(mcmc.output)
dim(tst) # [1] 4000 2
dim(tst$chain1) # [1] 4000 2
dim(tst$chain2) # [1] 4000 2
Pour la dimension de tst
, je m'attendais pas à 4000, 2 et View(tst)
fait un peu n'importe quoi aussi...
Bref juste pour dire que simplement :
mcmc.output$chain1 %>%
as_tibble() %>%
ggplot() +
geom_histogram(aes(x = theta), color = "white") +
labs(x = "survival probability")
me semble plus propre et si le livre se destine à des gens qui ne maitrisent pas les subtilités de R (et de tibble comme moi) ça peut rendre confus...
- "ggmcmc20
and basicMCMCplots21
. Shall I demonstrate these other options?"
Bof, MCMCvis fait déjà un bon taf, donner les nom des packages semble suffisant. A la limite un lien vers les vignettes pour les curieux.
2.5
- "Give example? Provide negative initial value for theta, or released in data < survived."
Pas sûr que ça soit très utile. Peut être juste une phrase pour dire que en effet quand le modèle nous donne une log-vraisemblance positive ou NA (pour un noeud particulier ou pour tout le modèle) c'est que en effet il y a un problème.
- "Note that models and nimbleFunctions need to be compiled before they can be used to specify a project."
Peut-être une phrase pour dire que le "project" c'est le modèle survival
et qu'on n'a pas choisi ce nom de projet au hasard, qu'on n'a pas le choix.
- "From here, you can obtain numerical summaries with samplesSummary()
"
Ou avec MCMCvis (MCMCsummary
) comme dans la partie 2.3
2.6
- "Say something on how default samplers are chosen by NIMBLE?"
J'avoue que je maîtrise pas les options de base de NIMBLE comme j'ai réécrit tous mes samplers. S'il y a plus à dire que juste "de base NIMBLE utilise des random walk" ça peut être intéressant.
- "several constraints need to be respected [...]"
Autre contrainte : la fonction run
du sampler ne peut pas prendre d'arguments, tout ce qui sert doit être contenu dans le modèle ou être donné en contrôle.
2.7
2.7.2 Indexing
Est-ce que ce point aurait pas plutôt sa place au moment d'écrire le code du modèle ?
Même si l'exemple est très simple et n'utilise pas d'indexe, ç'est quelque chose d'assez important comme détail.
Débuger un sampler perso
Pour débugger un code maison, on peut lancer la chaine en code R (au lieu du code compilé), en cas d'erreur on a droit à un message R au lieu d'un crash de RStudio (ou d'un message illisible de nimble). L'inconvénient c'est que NIMBLE peut interpréter du code légèrement différemment de R et la chaine non compilée va faire son travail parfaitement alors que la compilée va échouer...
survivalMCMC$run(500)
samples <- as.matrix(survivalMCMC$mvSamples)
Et pour débugger un sampler en particulier on peut entrer la fonction run
du sampler en mode débug (les sampler sont numérotés, le numéro donné par la méthode printSamplers de la chaine survivalMCMC)
debug(survivalMCMC$samplerFunctions[[1]]$run) # debug sampler 1
survivalMCMC$run(10)