2017-09-18 13 views
0

BDgraphパッケージを使用してG-Wishartディストリビューション(たとえばMohammadi and Wit(2015)およびMohammadi et al。(2017) Rの場合は、OSごとに異なる結果が得られます。BDgraph Rパッケージで異なるOSで異なる結果を出す(

しかしながら、結果は異なるマシン間で同じOS上で一貫しています!私は1つのOS上でrgwish機能からサンプリングしますこれを確認するには(最小再現性の例を与えるために)

(linuxと言う)

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") 

私は、どこかで得られた試​​料とパラメータを保存します。 (例えば)Windows上で再起動し、

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") 

(この例では、この最後の対角要素の)2つの周辺分布は、私の経験で明らかに異なっている実行します。

 [plot]

私はしかし、繰り返した場合Linuxがインストールされている別のマシンの手順で、2つのサンプルが一致します。 下のグラフGは問題ではないようですが、私は分解可能なグラフと分解不可能なグラフの両方を試してきましたが、対角行列(対角または非対称、上三角形など)好みの書式のように見えますが、作者はそれをどうにか修正します。

Rのバージョンはすべてのマシンで3.4.1で、BDgraphおよびすべての接続パッケージは最新のバージョンになります*。好奇心OSXは、回答の一貫異なる第三のセットを与えるかもしれない人のために

...私は考えることができることを変える

唯一のことは、BLASとLAPACKライ​​ブラリですが、私はいずれかをインストールしていません」私のLinuxシステムの両方でopenBLASを使っているのですが、Windows上のどのファイルがCRANのバイナリに入っているのかわかりません。

EDIT:本当に質問なので、どう思いますか?なぜこれが起こることができるか考えてみませんか?どのように問題を解決するための任意のアイデア?

間違っていることを証明するまで、サンプリングや検証のどちらかに間違っていると思いますので、パッケージのメンテナーに直接連絡する前にここに書き込むことにしました。パッケージの(私は信じている)バージョン2.42から解か

*(通常通りの両方のケースではgithubからコンパイルIGRAPHが失敗したLinux上でインストールしてください。)

答えて

0

問題。

問題は、一部のOMP並列領域内で乱数をサンプリングすることで発生しました。 LinuxとMacOSXはOMPを利用することができましたが、私のWindows版ではできなかったため、異なるOSで異なる結果が得られました(Windows版は参考になりました)。

このパッケージの作成者は問題を見つけ出し、この回答時点で次のリリースから利用できる修正を提供しました。