我正在尝试使用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]))
由于 Anamika
答案 0 :(得分:4)
我的猜测是你想要从模型中生成数据,其中结果的概率(在你的情况下是恶心)是协变量的函数。最标准(尽管不是唯一)这样做的方法是根据平均值(alpha/(alpha+beta))
以及确定方差的形状或过度离散参数来参数化基础Beta分布(通常等于{{1}更大的theta意味着更小的方差)。此外,最简单的方法是使平均值成为协变量的逻辑函数(如果需要,可以替换不同的反向链接函数)。
alpha+beta
包中的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)
设置为零,那么 应该获得与之前相同的结果(logistic(0)= 0.5,与您的意思相同),但我实际上没有检查过
编辑:获取此数据集的300个重复项
beta1
似乎有用(给出20 x 300矩阵)。那么用Y <- replicate(300,rbetabinom(k, prob=prob, size=n, theta=6))
替换plyr::raply
并转置(replicate
比r*ply
提供更多的一致性和控制权。