2017-09-18 4 views
0

Je produis des échantillons à partir d'une distribution G-Wishart (par exemple Mohammadi et Wit (2015) et Mohammadi et al. (2017)) en utilisant le paquet BDgraph dans R, mais je reçois des résultats différents d'un OS à l'autre.BDgraph R produisant des résultats différents (mais cohérents) sur différents OS

Les résultats sont cependant cohérents sur le même système d'exploitation sur différentes machines!

Pour voir cela (et pour donner un exemple reproductible minimum) Je vais échantillon de la fonction rgwish sur un OS (linux dire)

library(BDgraph) 
N = 10000 
s=7 
nu = s+5 
m = sample(5:50,s,replace = TRUE) 
G = matrix(nrow = s,ncol = s, 
      c(0,1,0,0,0,0,0, 
      0,0,1,1,0,0,0, 
      0,0,0,1,1,1,0, 
      0,0,0,0,1,1,0, 
      0,0,0,0,0,1,0, 
      0,0,0,0,0,0,1, 
      0,0,0,0,0,0,0)) 
sample_linux <- rgwish(n = N, adj.g = G, b = nu - s + 1 , D = diag(m,s,s)) 
save.image("foo.RData") 

Je puis enregistrez les échantillons obtenus et les paramètres quelque part . Redémarrez votre système (par exemple) Windows et exécutez

load("foo.RData") 
library(BDgraph) 
sample_win <- rgwish(n = N, adj.g = G, b = nu - s + 1 , D = diag(m,s,s)) 
plot(density(sample_linux[7,7,],n=2024), type="l") 
lines(density(sample_win[7,7,],n=2024) ,col="red") 

Les deux la distribution marginale (de ce dernier élément en diagonale dans cet exemple) sont nettement différents dans mon expérience:

 [plot]

Si je le répète cependant la procédure sur une autre machine avec Linux installé les deux échantillons coïncident. Le graphe sous-jacent G ne semble pas avoir d'importance, j'ai essayé avec des graphes décomposables ou non décomposables et j'ai essayé différents formats pour la matrice d'adjacence (avec diagonale ou non, symétrique ou triangulaire supérieure etc.) semble être le format préféré, et à l'intérieur de la fonction rgwish les auteurs le corrigent de toute façon.

La version R est 3.4.1 sur toutes les machines et BDgraph et tous les packages connectés sont disponibles dans leur dernière version *.

Pour ceux qui pourraient être curieux OSX donne un troisième ensemble de réponses ...

toujours différent La seule chose que je peux changer penser sont les bibliothèques BLAS et LAPACK, mais je ne l'ai pas installé un " expérimental "/ weird package, openBLAS sur mes deux systèmes linux et je ne sais même pas lequel sur Windows (celui-ci vient avec dans les binaires de CRAN) ...

EDIT: Je suppose qu'il n'y avait pas ' T vraiment une question, alors ... qu'en penses-tu? Une idée de pourquoi cela pourrait arriver? Une idée de comment résoudre le problème? Jusqu'à preuve du contraire, je suppose que c'est moi qui fais quelque chose de mal, que ce soit en échantillonnage ou en vérification, alors j'ai décidé d'écrire ici avant de contacter directement le mainteneur du paquet.

* (igraph compilées à partir de GitHub dans les deux cas normalement installer sur Linux échoue.)

Répondre

0

Problème résolu de (je crois) la version 2.42 du paquet.

Le problème concernait l'échantillonnage d'un nombre aléatoire dans une région parallèle OMP. Linux et MacOSX pourraient utiliser OMP alors que ma version sous Windows ne pourrait pas, d'où des résultats différents sous différents OS (la version Windows était correcte pour référence).

L'auteur du paquet a trouvé le problème et a fourni le correctif qui sera disponible à partir de la prochaine version au moment de cette réponse.