gpt4 book ai didi

r - Stan 中指数随机变量的模拟(RStan 包/接口(interface))

转载 作者:行者123 更新时间:2023-12-05 05:17:20 24 4
gpt4 key购买 nike

我正在尝试使用 RStan 代码模拟指数随机变量。

模拟指数随机变量的 R 代码如下所示:

A <- rexp(1000, 4)
B <- rexp(1000, lambda2)
C <- rexp(1000, lambda3)
D <- rexp(1000, lambda4)
E <- rexp(1000, lambda5)
F <- rexp(1000, lambda6)

A + B = AB
C + D = CD

mean(AB)
mean(CD)

如您所见,在 R 中模拟指数随机变量对我来说非常简单。以 A <- rexp(1000, 4) 为例。例如:它生成 1000 个结果的随机样本,其中 lambda = 4。然后我可以对这些模拟值进行统计分析(寻找方法等)。

现在我想在使用 RStan 时做同样的事情。使用 RStudio 的 R 笔记本功能,可以“插入”不同类型的代码,其中之一是 Stan:

enter image description here

我有以下 Stan 和 R 代码:

{stan output.var="exponential"}
generated quantities{
real total;
real number;

number = 0.0;
total = 0.0;
while(total < 1000) {
total += exponential_rng(4);
number += 1.0;
}
number -= 1.0;
}

{r}
simul2 <- sampling(exponential, algorithm="Fixed_param")

{r}
print(simul2, pars=c("number"), digits = 5)

但是,当我执行此代码(特别是 print 命令)时,我得到以下输出:

enter image description here

我不明白为什么我会得到如此荒谬的统计数据(平均 4000!?)。我的目标是能够获得与我在 R 中进行分析时相同的统计数据,正如我在上面所展示的那样;换句话说,我的目标是获得与 If I have done A <- rexp(1000, 4) 时相同的值。 ,在这种特定情况下,和X <- rexp(1000, lambda)更普遍。

显然,我的 Stan 代码不正确,所以我将不胜感激,请大家花时间解释一下正确的使用方法。

最佳答案

那是告诉你 number 的后验分布,这只是你的计数器。您的 Stan 代码做的事情与您的 R 代码不同,但是如果您将 N 和 lambda 作为数据传递,那么模拟您的 R 代码并不难:

data {
int<lower=1> N;
real<lower=0> lambda2;
real<lower=0> lambda3;
real<lower=0> lambda4;
}
generated quantities {
real mean_AB;
real mean_CD;
{
vector[N] A;
vector[N] B;
vector[N] C;
vector[N] D;
for (n in 1:N) {
A[n] = exponential_rng(4);
B[n] = exponential_rng(lambda2);
C[n] = exponential_rng(lambda3);
D[n] = exponential_rng(lambda4);
}
mean_AB = mean(A + B);
mean_CD = mean(C + D);
}
}

关于r - Stan 中指数随机变量的模拟(RStan 包/接口(interface)),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49386408/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com