Как преобразовать файл модели STAN в файл Graphviz DOT или другое графическое представление?

У меня есть файл STAN, описывающий иерархическую модель. Я хотел бы визуализировать эту иерархию со всеми параметрами, преобразовав код STAN в файл Graphviz DOT. Подойдет и другое графическое представление.

Рассмотрим следующий небольшой пример:

data {
  int<lower=0> J; // number of items
  int<lower=0> y[J]; // number of successes for j
  int<lower=0> n[J]; // number of trials for j
}
parameters {
  real<lower=0,upper=1> theta[J]; // chance of success for j
  real<lower=0,upper=1> lambda; // prior mean chance of success
  real<lower=0.1> kappa; // prior count
}
transformed parameters {
  real<lower=0> alpha; // prior success count
  real<lower=0> beta; // prior failure count
  alpha <- lambda * kappa;
  beta <- (1 - lambda) * kappa;
}
model {
  lambda ~ uniform(0,1); // hyperprior
  kappa ~ pareto(0.1,1.5); // hyperprior
  theta ~ beta(alpha,beta); // prior
  y ~ binomial(n,theta); // likelihood
}
generated quantities {
  real<lower=0,upper=1> avg; // avg success
  int<lower=0,upper=1> above_avg[J]; // true if j is above avg
  int<lower=1,upper=J> rnk[J]; // rank of j
  int<lower=0,upper=1> highest[J]; // true if j is highest rank
  avg <- mean(theta);
  for (j in 1:J)
  above_avg[j] <- (theta[j] > avg);
  for (j in 1:J) {
    rnk[j] <- rank(theta,j) + 1;
    highest[j] <- rnk[j] == 1;
  }
}

Есть ли способ разобрать это и преобразовать в файл, похожий на язык DOT, который я могу нарисовать, чтобы визуализировать иерархию?

Я много гуглил, и самое близкое к парсеру, что я смог найти, было внутри http://gephi.github.io/ проект.. Не уверен, что это поможет.

В итоге я хочу получить нечто похожее на это: Kruschke


person Dr. Mike    schedule 10.03.2015    source источник


Ответы (1)


В репозитории Stan нет инструмента для этого. Отчасти причина в том, что, в отличие от семейства BUGS, Стэну для работы такой граф не нужен. Но это хорошие инструменты визуализации, поэтому, если бы вы написали конвертер, я уверен, что вам было бы интересно его использовать. Я предполагаю, что путь наименьшего сопротивления будет включать преобразование файла .stan в формат, ожидаемый PyMC, и использование их возможности построения графиков.

person Ben Goodrich    schedule 11.03.2015
comment
Я немного поработаю над этим и посмотрю, что у меня получится. Буду держать вас в курсе! - person Dr. Mike; 12.03.2015