首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在rmarkdown中使用stan

如何在rmarkdown中使用stan
EN

Stack Overflow用户
提问于 2018-02-03 09:14:44
回答 2查看 3K关注 0票数 9

我想在笔记本上用rstan得到一个模型的估计系数

我有以下stan块:

代码语言:javascript
复制
```{stan output.var="rats"}

数据{

int N;

int T;

真正的xT;

real yN,T;

真正的xbar;

}

参数{

真正的alphaN;

真正的betaN;

真正的mu_alpha;

原始bugs模型中的real mu_beta;// beta.c

real sigmasq_y;

real sigmasq_alpha;

real sigmasq_beta;

}

已转换的参数{

原始错误模型中的real sigma_y;// sigma

real sigma_alpha;

real sigma_beta;

sigma_y = sqrt(sigmasq_y);

sigma_alpha = sqrt(sigmasq_alpha);

sigma_beta = sqrt(sigmasq_beta);

}

模型{

mu_alpha ~ normal(0,100);

mu_beta ~ normal(0,100);

sigmasq_y ~ inv_gamma(0.001,0.001);

sigmasq_alpha ~ inv_gamma(0.001,0.001);

sigmasq_beta ~ inv_gamma(0.001,0.001);

alpha ~ normal(mu_alpha,sigma_alpha);//矢量化

beta ~ normal(mu_beta,sigma_beta);//矢量化

for (n in 1:N)

代码语言:javascript
复制
for (t in 1:T) 
代码语言:javascript
复制
  y[n,t] ~ normal(alpha[n] + beta[n] * (x[t] - xbar), sigma_y);

}

生成的数量{

真正的alpha0;

alpha0 = mu_alpha - xbar * mu_beta;

}

代码语言:javascript
复制

我还有以下数据

代码语言:javascript
复制
```{r}

df <- read_delim("https://raw.githubusercontent.com/wiki/stan-dev/rstan/rats.txt",delim =“")

Y <- as.matrix(df)

X <- c(8,15,22,29,36)

xbar <-均值(X)

N <- nrow(y)

T <- ncol(y)

代码语言:javascript
复制

github上的documentation显示为rats_fit <- stan(file = 'https://raw.githubusercontent.com/stan-dev/example-models/master/bugs_examples/vol1/rats/rats.stan'),但由于我使用的是块,因此没有文件可供参考。

我试过stan(rats)summary(rats)print(rats),但这些似乎都不起作用。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-02-04 03:40:29

第一个RMarkdown块在幕后调用rats <- rstan::stan_model(model_code=the_text),因此为了从后验分布中采样,您最终需要执行rats_fit <- sampling(rats, data = list()),其剩余参数与stan的参数几乎相同。但在此之前,您必须调用library(rstan)

票数 8
EN

Stack Overflow用户

发布于 2018-02-04 09:24:29

谢谢!在你的帮助下,我想出了以下几点

代码语言:javascript
复制
library(tidyverse)
df <- read_delim("https://raw.githubusercontent.com/wiki/stan-dev/rstan/rats.txt",delim = " ")
y <- as.matrix(df)
x <- c(8,15,22,29,36)
xbar <- mean(x)
N <- nrow(y)
T <- ncol(y)
library(rstan)
options(mc.cores = parallel::detectCores())
rats_fit <- rstan::sampling(rats, 
                     data = list(y,x,xbar,N,T))
rstan::summary(rats_fit)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48592987

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档