我正在尝试使用R重现一篇文章的模拟结果,而我一开始就陷入困境。我应该生成大约10个协变量,都遵循bernoulli分布,它们通过回归结构进行关联:p(X_j=1|X_j-1)=0.1+0.1(X_j-1 - 0.15), j=1,...,10
,n=100
个人和X1~Binomial(1,0.5)
。我认为它应该很容易,但我想我错过了一些东西,不知道如何继续。任何建议或想法(甚至清除他们想说的内容)都会非常有用!
答案 0 :(得分:1)
像这样的递归定义很混乱。你可以使用循环
draw <- function() {
N<-10
x <- numeric(N)
x[1] <- runif(1) < .5
for(i in 2:N) {
x[i] <- runif(1) < 0.1+0.1*(x[i] - 0.15)
}
}
draw()
或减少功能
Reduce(function(xjm1,x) {
as.numeric(runif(1) < .1+.1*(xjm1-0.15)) },
rep(0,9), init=runif(1)>.5, accumulate=T)
如果您需要生成一堆这些值并计算相关性,则可以执行
xx <- replicate(100, draw())
cor(t(xx))