Пример 8 школ - PullRequest
       13

Пример 8 школ

0 голосов
/ 09 октября 2018

Я пытаюсь запустить классический пример r-stan из этого официального учебника .Но я не могу, потому что я получаю следующее сообщение об ошибке:

enter image description here

Я использую следующий код:

schools_dat <- list(J = 8, 
                    y = c(28,  8, -3,  7, -1,  1, 18, 12),
                    sigma = c(15, 10, 16, 11,  9, 11, 10, 18))
fit <- stan(file = '8schools.stan', data = schools_dat, 
            iter = 1000, chains = 4)

Где 8schools.stan - файл, который я дополнительно создал и вложил со следующим кодом:

data {
  int<lower=0> J; // number of schools 
  real y[J]; // estimated treatment effects
  real<lower=0> sigma[J]; // s.e. of effect estimates 
}
parameters {
  real mu; 
  real<lower=0> tau;
  real eta[J];
}
transformed parameters {
  real theta[J];
  for (j in 1:J)
    theta[j] = mu + tau * eta[j];
}
model {
  target += normal_lpdf(eta | 0, 1);
  target += normal_lpdf(y | theta, sigma);
}

Я хочу выяснить причины этой ошибки и как ее избежать .

Кроме того, я хочу упомянуть, что:

  1. Следующий код работает правильно и возвращает 10:

    fx <- inline ::cxxfunction (signature (x = "integer", y = "numeric"), 'return ScalarReal (INTEGER (x) [0] * REAL (y) [0]);') fx (2L, 5) </p>

  2. Я установил последнюю замороженную версию Rtools.

  3. Кроме того, Rtools, R и Rstudio расположены в папках без пробелов.
  4. Я работаю на Windows (не на ноутбуке)
  5. Я строго следую всемшаги из Руководство по установке .

Будет очень полезно для помощи!

Обновление

Я также установилSys.setenv (USE_CXX14 = 1), как предложил Бен Гудрич, но теперь я получаю следующее сообщение об ошибке

enter image description here

1 Ответ

0 голосов
/ 09 октября 2018

Это временная проблема из-за того, что (на этой неделе) пакет StanHeaders R (который требует C ++ 14) был принят в CRAN, но еще не пакет rstan R (который использует C ++ 14 для компиляциимодели).Итак, на данный момент вам сначала нужно позвонить Sys.setenv(USE_CXX14=1) Но любому, кто много прочтет этот пост в будущем, вряд ли придется делать это явно (пакет rstan R сделает это внутренне).

Вкл.В Windows вам нужно поместить CXX14=g++ -std=c++1y CXX14FLAGS=-O3 в файл ~ / .R / Makevars, но на Mac эти строки уже должны быть.

...