使用协变量生成Beta二项式响应

时间:2012-07-28 22:11:02

标签: r

我正在尝试使用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

1 个答案:

答案 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并转置(replicater*ply提供更多的一致性和控制权。