首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用stan从偏正态分布中提取

用stan从偏正态分布中提取
EN

Stack Overflow用户
提问于 2017-04-19 12:41:01
回答 1查看 777关注 0票数 3

有没有办法从斯坦的偏正态分布中提取?如果没有,是否有一种方法从正态分布中提取,然后转换为偏正态分布?

更新

我在stan手册中找到了y~skew_normal(mu, sigma, alpha),但是当我用参数对1000个值进行示例时

mu=1, sigma=10, alpha=-1000

我还得到了一些-inf值。知道为什么吗?

更新2

我的testing.stan

代码语言:javascript
复制
data{
  real mu;
  real sigma;
  real alpha;
}
model{

}
generated quantities{
  real temp;

    temp = skew_normal_rng( mu,  sigma,  alpha);

}

然后我的testing.R文件

代码语言:javascript
复制
sdata <- list(
  mu=1,
  sigma=10,
  alpha=-1000
)

 model <- stan_model("stan code//testing.stan")

system.time(
  samples  <- sampling(model,data=sdata,seed=42,
                       chain=1,algorithm="Fixed_param",
                       iter=10000,thin=1,control=list(max_treedepth=9)
  ) 
)

object <- rstan::extract(samples)
# hist(object$temp,breaks=100)
# plot(density(object$temp))
# mean(is.finite(object$temp))
# sum(!is.finite(object$temp))
sort(object$temp)

在运行sort(object$temp)之后,我得到了一些-inf值。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-19 19:35:29

运行此模型:

parameters { real y; } model { y ~ skew_normal(1, 10, -1000); }

我不会得到无限的平局。我确实有很多分歧,这意味着数字是不稳定的。即使我降低了初始步骤的大小并提高了目标接受率,这也是事实。

当斜参数为-10而不是-1000时,这个问题就消失了。

可能有一些方法可以改变内部实现,以便为极端倾斜值提供更大的稳定性,但在-1000的数值上,这无疑是有问题的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43496065

复制
相关文章

相似问题

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