我正在尝试使用 R 生成带有回归量的 Beta-Binomial 数据。我使用以下代码生成 Beta-Binomial 数据。现在我想在方程中添加一个协变量。感谢任何帮助。
set.seed(111)
k<-20
n<-60
x<-NULL
p<-rbeta(k,3,3)# so that the mean nausea rate is alpha/(alpha+beta)
for(i in 1:k)
x<-cbind(x,rbinom(300,n,p[i]))
谢谢安娜米卡
我正在尝试使用 R 生成带有回归量的 Beta-Binomial 数据。我使用以下代码生成 Beta-Binomial 数据。现在我想在方程中添加一个协变量。感谢任何帮助。
set.seed(111)
k<-20
n<-60
x<-NULL
p<-rbeta(k,3,3)# so that the mean nausea rate is alpha/(alpha+beta)
for(i in 1:k)
x<-cbind(x,rbinom(300,n,p[i]))
谢谢安娜米卡
我的猜测是,您想从结果概率(在您的情况下是恶心)是协变量的函数的模型中生成数据。执行此操作的最标准(尽管不是唯一)方法是根据其均值(alpha/(alpha+beta))
和形状或过度离散度参数化基础 Beta 分布,该参数决定方差(通常等效于alpha+beta
;较大的 theta 意味着较小的方差)。此外,将均值设为协变量的逻辑函数可能是最简单的方法(如果需要,可以替换为不同的反向链接函数)。
包里的rbetabinom
函数emdbook
已经这样参数化了(可以看代码——不是很复杂)。
set.seed(111)
beta0 <- 0 ## logit rate at x=0
beta1 <- 2 ## increase in logit-prob(nausea) per unit x
k <- 20
n <- 60
theta <- 6 ## shape parameter, equivalent to alpha+beta
x <- runif(k) ## distribution of covariates
## (you might want something different)
library(emdbook)
eta <- beta0+beta1*x ## linear predictor
prob <- plogis(eta) ## logistic transform
y <- rbetabinom(k, prob=prob, size=n, theta=6)
如果您设置beta1
为零,您应该得到与以前相同的结果(logistic(0)=0.5,与您的平均值相同),但我还没有实际检查过。
编辑:要获得此数据集的 300 个副本,
Y <- replicate(300,rbetabinom(k, prob=prob, size=n, theta=6))
似乎工作(给出一个 20 x 300 矩阵)。替换plyr::raply
和replicate
转置(r*ply
比 提供更多的一致性和控制replicate
)也是如此。