简单多元线性模型的Rstan码

简单多元线性模型的Rstan码,r,bayesian,winbugs,stan,rstan,R,Bayesian,Winbugs,Stan,Rstan,我正试图使用Rstan来拟合一个来自Christensen、Johnson、Branscum和Hanson的《贝叶斯思想和数据分析:科学家和统计学家简介》的示例模型。作者使用WinBUGS,因此需要进行一些修改。这些数据是完整的,WinBUGS代码复制在这篇文章的底部。这是一个非常简单的模型,但我是一个完全的初学者,我不知道如何绕过我遇到的错误。我的Stan代码如下: data { int N_subjects; int N_items; matrix[N_subjects,N_it

我正试图使用Rstan来拟合一个来自Christensen、Johnson、Branscum和Hanson的《贝叶斯思想和数据分析:科学家和统计学家简介》的示例模型。作者使用WinBUGS,因此需要进行一些修改。这些数据是完整的,WinBUGS代码复制在这篇文章的底部。这是一个非常简单的模型,但我是一个完全的初学者,我不知道如何绕过我遇到的错误。我的Stan代码如下:

data {
  int N_subjects;
  int N_items;
  matrix[N_subjects,N_items] y;
}

parameters {
  vector[N_items] mu;
  real<lower=0> sigma;
  real<lower=-1,upper=1> rho;
}

transformed parameters {
  cov_matrix[N_items] Sigma;
  for (j in 1:N_items)
    for (k in 1:N_items)
      Sigma[j,k] <- pow(sigma,2)*pow(rho,step(abs(j-k)-0.5));
}

model {
  sigma ~ uniform(0,100);
  rho ~ uniform(0,1);
  mu ~ multi_normal(0,100);
  for (i in 1:N_subjects)
    y[i] ~ multi_normal(mu,Sigma);
}
(我想)我理解解析器告诉我,我试图将不适当的数据类型传递给模型块中的multi_normal函数,但我不知道这是从何而来的。我怀疑我在定义协方差矩阵时做错了什么,但似乎不止一个参数的数据类型不正确

WinBUGS代码我正在对Stan代码进行建模:

model{
for(i in 1:30){
for(j in 1:6){
logy[i,j] <- log(y[i,j])
}
}
for(i in 1:30){logy[i,1:6]~dmnorm(m[1:6],precision[1:6,1:6])}
for(j in 1:6){
for(k in 1:6){
covariance[j,k] <- sigma2*pow(rho, step(abs(j-k)-0.5))
}
}
for(i in 1:6){ m[i] <- mu }
precision[1:6,1:6] <- inverse(covariance[1:6,1:6])
sigma ~ dunif(0,100)
mu ~ dnorm(0,0.001)
L <- -1/(6-1)
rho ~ dunif(L,1)
sigma2 <- sigma*sigma
tau <- 1/sigma2
}
模型{
(我在1:30){
对于(1:6中的j){
逻辑[i,j]错误来自

mu ~ multi_normal(0,100);
当你传递一个向量mu,整数0和整数100时,我想你需要

mu ~ normal(0,100);

它将μ的元素视为独立的、相同的正态分布,平均值为0,标准偏差为100。

D'oh!谢谢!我知道它很简单,所以我只是从它旁边看过去。。。
mu ~ normal(0,100);