我试图通过生成一些随机数据并通过 R 中的模拟来复制我的数据。在这个模拟中,我创建了深度权重 p1 和密度权重 p2。但是,我认为我没有正确实施密度的影响。
下面是我的模拟
nppl <- 100 #number of simulated people we want to run in the for loop
Sites <- LETTERS[1:4]
Depths <- c(.05, .1, .2, .3)
Density <- rep(0,4)
Places <- data.frame(Sites, Depths)
colnames(Places) <- c("Sites", "Depth")
Places <- data.frame(Places, Density=rep(0, 4))
head(Places)
fill <- rep(0, 100)
ppl <- data.frame(ID=1:nppl, Choice=fill, Depth=fill, Density=fill)
p1 <- 1
p2 <-0.3
#set.seed(42)
for (i in 1:nppl) {
prob <- p1*Places$Depth * exp(-p2 * Places$Density)
prob <- prob/sum(prob)
choice <- sample(as.character(Places$Site), 1, prob=prob)
ppl[i, ] <- c(i, choice, Places$Depth[Places$Site==choice], Places$Density[Places$Site==choice])
Places$Density[Places$Site==choice] <- Places$Density[Places$Site==choice] + 1
}
ppl
使用公式
prob=p1*depth*exp(-p2*density)
人 100 的归一化概率应该是 A 的 0.40,B 的 0.59,C 和 D 的几乎为零。
有了这种强烈的密度效应,随着密度的增加,站点 C 和 D 应该变得非常不受欢迎,但这似乎并没有发生。我做错了什么?我的 p1 和 p2 值有问题吗?使用 p1=1 应该没有问题,但我不确定。