有没有办法从斯坦的偏正态分布中提取?如果没有,是否有一种方法从正态分布中提取,然后转换为偏正态分布?
更新
我在stan手册中找到了y~skew_normal(mu, sigma, alpha),但是当我用参数对1000个值进行示例时
mu=1, sigma=10, alpha=-1000
我还得到了一些-inf值。知道为什么吗?
更新2
我的testing.stan
data{
real mu;
real sigma;
real alpha;
}
model{
}
generated quantities{
real temp;
temp = skew_normal_rng( mu, sigma, alpha);
}然后我的testing.R文件
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值。
发布于 2017-04-19 19:35:29
运行此模型:
parameters { real y; } model { y ~ skew_normal(1, 10, -1000); }
我不会得到无限的平局。我确实有很多分歧,这意味着数字是不稳定的。即使我降低了初始步骤的大小并提高了目标接受率,这也是事实。
当斜参数为-10而不是-1000时,这个问题就消失了。
可能有一些方法可以改变内部实现,以便为极端倾斜值提供更大的稳定性,但在-1000的数值上,这无疑是有问题的。
https://stackoverflow.com/questions/43496065
复制相似问题