#The effect of sampling from a finite number of possible environmental drivers was explored using a simulation written in R #stat with population N N<-10000 #these are the absolute number of cells divisions of all the single stressors growth.effects <- c(0.55, 0.30, 0.57, 0.64, 0.35, 0.48, 0.46, 0.61) #Number of environmental drivers (NED) NED <- c(1,2,3,4,5,6,7,8) growthvector.finite <-numeric(0) NEDvector.finite <-numeric(0) growthvector.infinite <-numeric(0) NEDvector.infinite <-numeric(0) #this is simulating what our data would be if we removed all the interactions so that we can see the effect of finite environments only for (i in 1:N){ env.finite <- sample(growth.effects,8, replace=FALSE, prob = NULL) growth.now <- numeric(0) for(i in 1:8){ growth <- min(env.finite[1:i]) growth.now <-c(growth.now, growth) } growth.finite <-growth.now NED.finite <- NED growthvector.finite <- c(growthvector.finite, growth.finite) NEDvector.finite <-c(NEDvector.finite, NED.finite) #this is what would happen if we took the same growth effects of the single environmental changes, but allowed for infinite environments with those same changes env.infinite <-sample(growth.effects,8, replace=TRUE, prob = NULL) growth.now.inf <- numeric(0) for(i in 1:8){ growth.inf <- min(env.infinite[1:i]) growth.now.inf <-c(growth.now.inf,growth.inf) } growth.infinite <- growth.now.inf NED.infinite <- NED growthvector.infinite <- c(growthvector.infinite, growth.infinite) NEDvector.infinite <-c(NEDvector.infinite, NED.infinite) } infinite.matrix <- matrix(c(NEDvector.infinite, growthvector.infinite), nrow=length(NEDvector.infinite)) colnames(infinite.matrix) <- c("NED", "growth") sub1i <- subset(infinite.matrix, NED ==1) sub2i <- subset(infinite.matrix, NED ==2) sub3i <- subset(infinite.matrix, NED ==3) sub4i <- subset(infinite.matrix, NED ==4) sub5i <- subset(infinite.matrix, NED ==5) sub6i <- subset(infinite.matrix, NED ==6) sub7i <- subset(infinite.matrix, NED ==7) sub8i <- subset(infinite.matrix, NED ==8) mean1i <- mean(sub1i[,2]) mean2i <- mean(sub2i[,2]) mean3i <- mean(sub3i[,2]) mean4i <- mean(sub4i[,2]) mean5i <- mean(sub5i[,2]) mean6i <- mean(sub6i[,2]) mean7i <- mean(sub7i[,2]) mean8i <- mean(sub8i[,2]) var1i <- var(sub1i[,2]) var2i <- var(sub2i[,2]) var3i <- var(sub3i[,2]) var4i <- var(sub4i[,2]) var5i <- var(sub5i[,2]) var6i <- var(sub6i[,2]) var7i <- var(sub7i[,2]) var8i <- var(sub8i[,2]) mean.growth.infinite <- c(mean1i,mean2i,mean3i,mean4i,mean5i,mean6i,mean7i,mean8i) var.growth.infinite <- c(var1i,var2i,var3i,var4i,var5i,var6i,var7i,var8i) sd.growth.infinite<-sqrt(var.growth.infinite) finite.matrix <- matrix(c(NEDvector.finite, growthvector.finite), nrow=length(NEDvector.finite)) colnames(finite.matrix) <- c("NED", "growth") sub1 <- subset(finite.matrix, NED ==1) sub2 <- subset(finite.matrix, NED ==2) sub3 <- subset(finite.matrix, NED ==3) sub4 <- subset(finite.matrix, NED ==4) sub5 <- subset(finite.matrix, NED ==5) sub6 <- subset(finite.matrix, NED ==6) sub7 <- subset(finite.matrix, NED ==7) sub8 <- subset(finite.matrix, NED ==8) mean1 <- mean(sub1[,2]) mean2 <- mean(sub2[,2]) mean3 <- mean(sub3[,2]) mean4 <- mean(sub4[,2]) mean5 <- mean(sub5[,2]) mean6 <- mean(sub6[,2]) mean7 <- mean(sub7[,2]) mean8 <- mean(sub8[,2]) var1 <- var(sub1[,2]) var2 <- var(sub2[,2]) var3 <- var(sub3[,2]) var4 <- var(sub4[,2]) var5 <- var(sub5[,2]) var6 <- var(sub6[,2]) var7 <- var(sub7[,2]) var8 <- var(sub8[,2]) mean.growth.finite <- c(mean1,mean2,mean3,mean4,mean5,mean6,mean7,mean8) var.growth.finite <- c(var1,var2,var3,var4,var5,var6,var7,var8) sd.growth.finite<-sqrt(var.growth.finite) mean.real.data <- c(0.50, 0.52, 0.45, 0.43, 0.39, 0.37, 0.36, 0.20) var.real.data <- c(0.015, 0.040, 0.047, 0.022, 0.020, 0.006, 0.018, 0) sd.real.data<-sqrt(var.real.data) #df <- data.frame(gr.fin = c(mean1,mean2,mean3,mean4,mean5,mean6,mean7,mean8), gr.inf = c(mean1i,mean2i,mean3i,mean4i,mean5i,mean6i,mean7i,mean8i), var.fin =c(var1,var2,var3,var4,var5,var6,var7,var8) , var.inf = c(var1i,var2i,var3i,var4i,var5i,var6i,var7i,var8i), weirdness) #plot(weirdnessvector.infinite, growthvector.infinite) #plot(weirdnessvector.finite, growthvector.finite) plot(NED, mean.growth.finite, col = "blue", ylim = c(0.2, 0.55), xlab= "Number of Environmental Drivers", ylab = "Population Growth") points(NED, mean.growth.infinite, col ="orange") #points(weirdness, mean.real.data, col = "black") arrows(NED, mean.growth.finite+var.growth.finite, NED, mean.growth.finite - var.growth.finite, length=0.05, angle=90, code = 3, col= "blue" ) arrows(NED, mean.growth.infinite+var.growth.infinite, NED, mean.growth.infinite - var.growth.infinite, length=0.05, angle=90, code = 3, col= "orange" ) #arrows(weirdness, mean.real.data+var.real.data, weirdness, mean.real.data - var.real.data, length=0.05, angle=90, code = 3, col= "black" ) #plot standard deviation arrows(NED, mean.growth.finite+sd.growth.finite, NED, mean.growth.finite - sd.growth.finite, length=0.05, angle=90, code = 3, col= "blue" ) arrows(NED, mean.growth.infinite+sd.growth.infinite, NED, mean.growth.infinite - sd.growth.infinite, length=0.05, angle=90, code = 3, col= "orange" ) tiff("Figure.S3-%d250215.tiff",width=1400, height=800, res=96) #Plot the names of the plots that you want grid.arrange(P1,C3, M3, A3, ncol=2, nrow=2) #Remeber to turn the device off dev.off()