使用 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
我正在尝试生成一个从 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