Skip to content
/ bmsR Public

An R package for doing Bayesian model selection for group studies.

Notifications You must be signed in to change notification settings

mattelisi/bmsR

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

bmsR

R package for doing Bayesian model comparison at the group level, treating the model as random effect.

See Stephan, Penny, Daunizeau, Moran, and Friston (2009). Bayesian model selection for group studies. NeuroImage, 46(4):1004–1017. Also, this blog post

This implementation has been translated from SPM 12, a toolbox for matlab used in the analysis of neuroimaging data.

If you want to use it, to install type in R terminal:

library(devtools)
install_github("mattelisi/mlisi") # required for some dependancies
install_github("mattelisi/bmsR")

Here is an example

# input some example data, a matrix [N-by-K] of model evidences
# where N is the number of subjects and K the number of models
# (here we have 12 participants and 6 models)
m <- structure(c(2.50809867187394e-22, 0.000146611855314775, 4.58668624689671e-25, 4.10535400464176e-07, 0.0686634208305935, 0.0367833971579169, 0.000110346493359948, 1.68129802885811e-08, 0.108275519613786, 3.9578164134093e-11, 0.0367837099909541, 1.08999881504e-07, 0.0343412062159018,  0.00446326510403562, 0.00172330666747482, 0.000990826155243488,  0.158393579220946, 0.0295386936257688, 0.00012552265085804, 0.0272190104668559, 0.0530936016907313, 2.07255371227757e-10, 0.0214823528123676,   4.73437495302293e-05, 0.677938621542126, 5.20954432898137e-08,  0.000627393517771912, 0.000388486329012404, 3.17565869877651e-18,  0.191176500286399, 3.83899865682068e-07, 0.0619217494201652,   0.559188952807853, 5.06676447796227e-09, 0.0418921682773635,  0.702014475355336, 0.249399681241455, 0.862817395918837, 0.864775715064725,  0.865617369930796, 0.147322698727657, 0.643610120435765, 0.866608545004982,   0.789544918511435, 0.207285291019464, 0.866813333179825, 0.779961587662899,  0.258256692887969, 0.0337525764999333, 0.116769634805204, 0.117034665657295,   0.11714857188609, 0.497854787795748, 0.0871031579431148, 0.117282712780637,   0.106853285174707, 0.0635553531488496, 0.117310426702891, 0.105556322380037,   0.0349512426797482, 0.00456791450058339, 0.0158030402211649,  0.0158389190927326, 0.0158543351634575, 0.127765513425055, 0.0117881305510349, 0.0158724891702976, 0.0144610196138568, 0.00860128171931599,  0.0158762348036855, 0.0143238588763795, 0.00473013632753477), .Dim = c(12L, 6L), .Dimnames = list(c("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"), c("M1", "M2", "M3", "M4", "M5", "M6")))

# load the library
library(bmsR)

# the model evidences above sum to 1 for each participants
# (they are the Akaike weights from a yet unpublished study)
# so we convert them into log model evidences
m <- log(m)

# run model selection procedure
# VB_bms() is the main function of the package
bms0 <- VB_bms(m)

Results:

> # the code output a structure with fields
> names(bms0)
[1] "alpha" "r"     "xp"    "bor"   "pxp"
> 
> # Dirichlet parameters
> bms0$alpha
[1]  1.043623  1.064976  1.720754 11.835847  1.290641  1.044160
> 
> # model frequencies
> bms0$r
[1] 0.05797903 0.05916533 0.09559743 0.65754706 0.07170226 0.05800889
> 
> # exceedance probabilities 
> bms0$xp
[1] 0.000279 0.000319 0.001173 0.997441 0.000514 0.000274
> 
> # Bayesian omnibus risk (i.e. probability that model differences are due to chance)
> bms0$bor
[1] 0.002890379
> 
> # protected exceedance probabilities
> bms0$pxp
[1] 0.0007599235 0.0007998079 0.0016513395 0.9950397470 0.0009942442
[6] 0.0007549379

About

An R package for doing Bayesian model selection for group studies.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages