質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
WinBUGS

WinBUGSとは、BUGSをWindowsに移植したフリーのソフトウェアです。Windows上でのベイズ階層モデルの解析が可能。汎用性を持つため、ベイズ解析では幅広く使用されています。

R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

Q&A

1回答

1369閲覧

R上でWinBUGSを動かしたいのですが、WinBUGS側でエラーが出てしまいます。R/MCMC

CHIROPTERA

総合スコア0

WinBUGS

WinBUGSとは、BUGSをWindowsに移植したフリーのソフトウェアです。Windows上でのベイズ階層モデルの解析が可能。汎用性を持つため、ベイズ解析では幅広く使用されています。

R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

0グッド

0クリップ

投稿2020/05/07 10:42

編集2020/05/08 08:27

R上でWinBUGSを動かすためにR2WinBUGSというパッケージを使っています。
問題は、このコードを実施するとWinBUGSが立ち上がるのですが、WinBUGSで以下のようにlogが出て止まってしまいます。
(ファイルが開けないというエラーメッセージが出てしまいます。)
一時ファイルのフォルダには確かにここで指定されているそれぞれのファイルが存在するので、開けないという問題が何を指しているのかよくわかりません。
どなたか、R2WinBUGSを使ってMCMCを回したことのある方、教えて頂ければ幸いです。

logは以下のようです。

display(log)
check(C:/WinBUGS/GLM_Poisson.txt)
model is syntactically correct
data(C:/WinBUGS/data.txt)
undefined variable
compile(3)
inits(1,C:/WinBUGS/inits1.txt)
command #Bugs:inits cannot be executed (is greyed out)
inits(2,C:/WinBUGS/inits2.txt)
command #Bugs:inits cannot be executed (is greyed out)
inits(3,C:/WinBUGS/inits3.txt)
command #Bugs:inits cannot be executed (is greyed out)
gen.inits()
command #Bugs:gen.inits cannot be executed (is greyed out)
thin.updater(2)
update(500)
command #Bugs:update cannot be executed (is greyed out)
set(alpha)
command #Bugs:set cannot be executed (is greyed out)
set(beta1)
command #Bugs:set cannot be executed (is greyed out)
set(beta2)
command #Bugs:set cannot be executed (is greyed out)
set(beta3)
command #Bugs:set cannot be executed (is greyed out)
set(lambda)
command #Bugs:set cannot be executed (is greyed out)
set(deviance)
command #Bugs:set cannot be executed (is greyed out)
dic.set()
command #Bugs:dic.set cannot be executed (is greyed out)
update(500)
command #Bugs:update cannot be executed (is greyed out)
coda(,C:/WinBUGS/coda)
command #Bugs:coda cannot be executed (is greyed out)
stats(
)
command #Bugs:stats cannot be executed (is greyed out)
dic.stats()

DIC
history(*,C:/WinBUGS/history.odc)
command #Bugs:history cannot be executed (is greyed out)
save(C:/WinBUGS/log.odc)
save(C:/WinBUGS/log.txt)

コードは

#p64 BUGS言語によるモデルの記述
sink("GLM_Poisson.txt")
cat("
model {
alpha ~ dunif(-20,20)
beta1 ~ dunif(-10,10)
beta2 ~ dunif(-10,10)
beta3 ~ dunif(-10,10)
for (i in 1:n){
c[i] ~ dpois(lambda[i])
log(lambda[i]) <- log.lambda[i]
log.lambda[i] <- alpha + beta1 * year[i] + beta2 * pow(year[i],2) +
beta3 * pow(year[i],3)
}
}
",fill = TRUE)
sink()

bugs.dir <- "c:/Program Files/WinBUGS14"

#データの設定(修正)
mean.year <- mean(data$year) #年の共変量の平均
sd.year <- sd(data$year) #年の共変量の標準偏差
win.data <- list(C = data$C,n = length(data$C),
year = (data$year - mean.year) / sd.year)

#初期値の設定
inits <- function() list(alpha = runif(1,-2,2),beta1 = runif(1,-3,3))

#監視(推定)対象パラメータの設定
params <- c("alpha","beta1","beta2","beta3","lambda")

#MCMCの設定
ni <- 2000
nt <- 2
nb <- 1000
nc <- 3

#RからWinBUGSを呼び出す
out <- bugs(data = win.data, inits = inits, parameters.to.save = params,
model.file = "GLM_Poisson.txt", n.chains = nc, n.thin = nt,
n.iter = ni, n.burnin = nb, debug = TRUE, bugs.directory = bugs.dir,
working.directory = getwd())

print(out,dig = 3)

追加

RStudioのコンソールには

Error in file(con, "rb") : コネクションを開くことができません
追加情報: 警告メッセージ:
file(con, "rb") で:
ファイル 'C:/Program Files(x86)/OpenBUGS/OpenBUGS323/System/Rsrc/Registry.odc' を開くことができません: No such file or directory
bugs.run(n.burnin, bugs.directory, WINE = WINE, useWINE = useWINE, でエラー:
WinBUGS executable does not exist in C:/Program Files(x86)/OpenBUGS/OpenBUGS323

と出ています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

すべての推定パラメータに初期値の設定ができていないため、gen.initで初期値を生成・設定しているようです。このgen.initで生成した初期値がパラメータの推定範囲を外れて矛盾するため、計算できていないように見えます。alpha、beta1だけでなく、beta2、beta3、lambda、cなどにも初期値を与えれば計算できるようになるかと思います。

投稿2021/03/10 08:36

sb8001at

総合スコア2

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問