On Saturday, 20 February 2016 at 15:00:50 UTC, jmh530 wrote:
On Saturday, 20 February 2016 at 13:31:03 UTC, bachmeier wrote:
On Friday, 19 February 2016 at 21:50:43 UTC, jmh530 wrote:
On Friday, 19 February 2016 at 21:10:45 UTC, Dave wrote:

Alternately, you could try calling pystan or rstan from D. If you make any progress on these approaches, I would be interested.

If it has an R interface, it also has a D interface using my rdlang project. I will look at it when I get some free time.

R is the most popular way to use Stan I think. rstan is the library.

I looked at rstan. I've heard of it but never used it. AFAICT, the computationally intensive part is done by the call to stan() from within the R code. Therefore there are no efficiency issues with calling D -> R -> stan.

I took the easy road and ran the given R code directly. Here is my program:

import rinsided, rdlang.r, rdlang.vector;

void main() {
  evalRQ(`library(rstan)`);
evalRQ(`y <- read.table('https://raw.github.com/wiki/stan-dev/rstan/rats.txt', header = TRUE)`);
  evalRQ(`x <- c(8, 15, 22, 29, 36)`);
  evalRQ(`xbar <- mean(x)`);
  evalRQ(`N <- nrow(y)`);
  evalRQ(`T <- ncol(y)`);
evalRQ(`rats_fit <- stan(file = 'https://raw.githubusercontent.com/stan-dev/example-models/master/bugs_examples/vol1/rats/rats.stan')`); auto stanOutput = RVector(evalR(`attr(rats_fit, "sim")[[1]][[1]][[1]]`));
  stanOutput.print();
}

stanOutput is a D struct holding a pointer to that particular part of the output. Without more knowledge of rats_fit, I can't go further. You could also pass D data into R (y, x, xbar, ...) but I didn't see a reason to do that here. Nonetheless this is what you want, a way to call rstan from D, and then access the results from your D program.

Reply via email to