假设我想生成X的先前对象的X和Y条件以及概率(F)。我的算法:在特定的一天中,一个人的状态为1/0。如果状态为0,则第二天的状态将为rbinom(1,1,0.5)
;如果状态1,则第二天的状态将为rbinom(1,1,F[this day])
。在这里,我想为N个人和d天生成这些数据。使用R代码生成基于条件的数据
我的代码:
N <- 10 # number of individual
d <- 10 # days
F <- c(0.9,0.8, 0.7, 0.6, 0.5, 0.4) # Probabilities
for(j in 1:N){
x <- NULL
x[1] <- rbinom(1,1,0.5)
y <- NULL
y[1] <- ifelse(x[1]==1, 1, 0)
for(i in 2:d){
if(x[i-1]==0)
{
y[i] <- x[i-1]
x[i] <- rbinom(1,1,0.05)
}
if(x[i-1]==1)
{
y[i] <- y[i-1]+x[i-1]
x[i] <- rbinom(1,1,F[y[i]])
}
}
}
这段代码产生的数据一样,
> x
[1] 1 1 0 0 0 0 0 0 0 1
> y
[1] 1 2 3 0 0 0 0 0 0 0
但我想产生X和Y是这样的:
> x
[1] 1 1 0 0 0 0 0 0 0 1
> y
[1] 1 2 0 0 0 0 0 0 0 1
我没有找到取出哪部分代码是错误的。任何人都可以帮忙吗?
如果您使用'rbinom',那么输出将在一定程度上....“随机”。所以问题就变成了:从某种意义上说,你得到的输出不是“喜欢”你期望的输出?你还没有解释这个过程应该做什么,并且只会产生你认为是错误的代码,所以为了生成高效的R代码而试图融合“Fortran-mind”似乎没什么意义。 – 2015-04-02 06:35:01
谢谢。我修改了上面的问题。 – Rudro88 2015-04-02 15:31:07
首先要认识到的是,外层循环正在做这个过程10次,但只留下最后一个被检查。你可以删除外部循环,任何东西都不应该改变。我将对代码进行一些更改,您可以看看您是否可能真的已经在做你想要的东西了。 – 2015-04-02 16:33:48