0

我试图通过生成一些随机数据并通过 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 应该没有问题,但我不确定。

4

0 回答 0