使用 R 模拟贝叶斯数据

Simulating Bayesian data using R

我正在尝试生成一个从 3 个分布生成的数据集,然后用不同颜色的组绘制它。结果按时间线性回归的均值分布,误差服从标准正态分布。我希望它有 100 条轨迹,5 个时间点和以下特征。

距离。 1:截距为 0.1,斜率为 2 区2:截距为 2,斜率为 5 区3:截距项 3,斜率 7.

我想生成 100 条轨迹的混合,假设平均 60% 的数据从 dist 1 生成,25% 从 dist.1 生成。 2,和 15% 从 dist 3 生成。

我遇到的问题是我不知道如何更改“h”变量以允许我拥有三种混合物。

这就是我到目前为止所做的。

set.seed(10)
x <- c(1:5); #time points
mu.0  <- c(0.1, 2, 3) #intercept for each dist.
mu <- c(2, 5, 7) #slope for each dist.
n.subj <- 100

h <- 1+rbinom(100, 1, 0.6) 
alpha <- rnorm(100,0,1) 
y.data <- c(); ind <- c()
for(i in 1:100){
  ind <- rbind(ind, rep(i, 5))
  y.data <- rbind(y.data,
                  c( mu.0[h[i]]+mu[h[i]]*x+alpha[i]+rnorm(5,0,1)))} 

提前致谢!

如果您希望 h 成为索引向量,可以使用 sample.int 函数来完成

h <- sample.int(3, 100, replace=TRUE, prob=c(0.6, 0.25, 0.15))
h
##   [1] 1 3 1 2 1 1 1 1 2 2 1 1 1 3 1 3 1 2 1 2 1 1 1 1 1 3 1 1 1 1 1 1
##  [33] 2 1 1 1 1 2 1 1 1 1 2 2 1 1 2 2 1 1 1 1 1 3 1 2 2 1 2 1 1 3 3 1
##  [65] 2 3 2 3 1 1 1 1 3 3 2 1 2 2 1 1 2 3 2 2 3 3 1 1 1 1 1 1 1 3 1 2
##  [97] 1 2 3 1