Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用rjags定义条件线性高斯网络_R_Bayesian_Bayesian Networks_Rjags - Fatal编程技术网

使用rjags定义条件线性高斯网络

使用rjags定义条件线性高斯网络,r,bayesian,bayesian-networks,rjags,R,Bayesian,Bayesian Networks,Rjags,我正在努力使用rjags定义一个条件线性高斯贝叶斯网络。 (clg BN由同时具有连续正常值和离散父节点(预测值)的连续子节点(结果)定义) 对于下面的网络,A是离散的,D和E是连续的: 对于rjags模型,我希望在值节点Atakes:pseudo code>上定义节点E的参数 model { A ~ dcat(c(0.0948, 0.9052 )) D ~ dnorm(11.87054, 1/1.503111^2) if A==a then E ~ dnorm(6.5583

我正在努力使用
rjags
定义一个条件线性高斯贝叶斯网络。 (clg BN由同时具有连续正常值和离散父节点(预测值)的连续子节点(结果)定义)

对于下面的网络,A是离散的,D和E是连续的:

对于
rjags
模型,我希望在值节点
A
takes:pseudo code>上定义节点
E
的参数

model {  
  A ~ dcat(c(0.0948, 0.9052 ))
  D ~ dnorm(11.87054, 1/1.503111^2)

  if A==a then E ~ dnorm(6.558366 + 1.180965*D, 1/2.960002^2) 
  if A==b then E ~ dnorm(3.370021 + 1.532289*D, 1/6.554402^2)   
}
我可以通过使用下面的代码来做一些事情,但是它会很快被更多的预测和分类级别弄糊涂

library(rjags)

model <- textConnection("model {  
  A ~ dcat(c(0.0948, 0.9052 ))
  D ~ dnorm(11.87054, 1/1.503111^2)

  int = 6.558366 - (A==2)*(6.558366 - 3.370021) 
  slope = 1.180965 - (A==2)*(1.180965 - 1.532289)
  sig = 2.960002 - (A==2)*(2.960002 - 6.554402)

  E ~ dnorm(int + slope*D, 1/sig^2) 
}")

jg <- jags.model(model, n.adapt = 1000

您只需要将变量A用作索引参数:

library('rjags')

model <- "
model {  
  A ~ dcat(c(0.0948, 0.9052 ))
  D ~ dnorm(11.87054, 1/1.503111^2)

  ints <- c(6.558366, 3.370021)
  int <- ints[A]
  slopes <- c(1.180965, 1.532289)
  slope <- slopes[A]
  sigs <- c(2.960002, 6.554402)
  sig <- sigs[A]

  E ~ dnorm(int + slope*D, 1/sig^2) 
}
"

jg <- jags.model(textConnection(model), n.adapt = 1000)
library('rjags'))

非常感谢,这正是我所希望的。
library('rjags')

model <- "
model {  
  A ~ dcat(c(0.0948, 0.9052 ))
  D ~ dnorm(11.87054, 1/1.503111^2)

  ints <- c(6.558366, 3.370021)
  int <- ints[A]
  slopes <- c(1.180965, 1.532289)
  slope <- slopes[A]
  sigs <- c(2.960002, 6.554402)
  sig <- sigs[A]

  E ~ dnorm(int + slope*D, 1/sig^2) 
}
"

jg <- jags.model(textConnection(model), n.adapt = 1000)
library("runjags")

model <- "
model {  
  A ~ dcat(catprobs)
  D ~ dnorm(Dmu, Dprec)

  int <- ints[A]
  slope <- slopes[A]
  sig <- sigs[A]

  E ~ dnorm(int + slope*D, 1/sig^2) 

  #data# catprobs, Dmu, Dprec, ints, slopes, sigs
  #monitor# A, D, E
}
"

catprobs <- c(0.0948, 0.9052)
Dmu <- 11.87054
Dprec <- 1/1.503111^2
ints <- c(6.558366, 3.370021)
slopes <- c(1.180965, 1.532289)
sigs <- c(2.960002, 6.554402)

results <- run.jags(model)
results