Remember last time when I mentioned some prey being atrociously crushed by predators doing what they need to do in order to survive (feed on the prey)? I said many times that it was quite oversimplified and generalist, so here is a bit of more interesting bits.
Last time I assumed that every prey that was “edible” was essentially doomed and eaten/chewed/swallowed/sucked/peeled or whichever ending you deem appropriate. Now it does not take a genius to realise that it’s not because something is edible that it will be eaten, as many parents (or aunts and uncles trying to feed a representative of the next generation) will remember. Inasmuch as prey presence is required, the behaviour of the predator comes into play as well. One could see the resource use/energy gain (let’s call it “E”) as a function of the attack rate (“a”) and a measure of prey density (“P”) that has already been turned into an energy equivalent. That attack rate can represent a large variety of things such as the capacity for the predator to mechanically process the prey, the frequency of feeding events, etc… a basically represents the proportion of the energy that can be gathered from a prey that is actually turned into energy in the predator. Obviously, E=a∙P is not a representation of what occurs in most natural settings (Though… “Postgraduate productivity” = “Postgraduate attack rate”∙“Free food density” ), many other factors come into play, that will induce some behavioural response from the predator to the environment. To make it simple: is it worth it? In fact the Energy gained will be reduced by the energy spent to capture and process/digest the prey, which one can call handling cost (“h”). So for a feeding event to be worth it, one needs to make sure the handling cost still allows some energy intake. On the other hand, if the handling cost is null (h=0), then only the attack rate limits the energy gain.
In that last case, E = a∙P. Otherwise, the energy gain E is only a fraction of what can be acquired, which rises with an increased attack rate and diminishes with a high handling time. Hence it can be approximated that E =a∙P1+h∙a∙P. In that equation, the higher the cost to handle/digest the prey (h), the lower the neat energy gain (E). If all or almost all the energy that can be gained is gained (h close to 0) then the denominator is close to one and E ≅ a∙P
Now, you will ask me: “What’s the point of all this gibberish?” I cannot blame you, it will take some time but we will be getting there. Time to do some plots!
We will be looking at what happens at only one point in time, without any dynamics from the prey population. So let’s set the energy equivalent prey density P to any value you want and get also numbers that make some sense for a and h. (especially for a. If you set a>1 you then would induce that the predator gets more energy from the prey than the energy that can be gathered from the prey). We can make the assumption that h represents the “handling time” in minutes (so here for h=0.1 it represents 6 seconds)
P<-50
a<-0.3
h<-0.1
Now with a few values set, what happens to E =a∙P1+h∙a∙P when “a” varies from a low 0.001 (nearly no energy gained from that prey) to 1 (all of the energy is gained)?
Look and see: just cut and paste this in R:
curve(expr=(x*P)/(1+h*x*P),from=0.001,to=1,xlab=”Attack rate (a)”,ylab=”Energy gain”)

Logically, as a diminishes, the energy gain becomes almost null and vice-versa. The same can be done with a varying h from a low score (if h represents time, then, a low h means nearly no time needed, e.g. a baleen whale sieving through a mass of krill) to a high one (e.g. a complicated recipe)
curve(expr=(a*P)/(1+a*x*P),from=0.001,to=1,xlab=”handling time (h)”,ylab=”Energy gain”)

Those two parameters “a” and “h” might be influenced by the properties of the prey. In a population of fish for example, animals may have a higher attack rate for small representatives of a bivalve and a smaller one once the bivalves become larger and a large part of the energy gained has been spent while crushing the shell. Hence the fish would mostly feed on the smallest bivalves because that’s when they get more energy, but at some point, once all the small bivalves are eaten, only the big ones remain. It is also possible that after they reach a size, bivalves do provide a better energy intake in regards to what is required to process them. So instead of saying “energy gain”, imagine that E in the equation becomes “R”, the per capita resource use. It might be easier to use a custom-made function to get values for it:
R<-function(x,P=50,h=0.1){(x*P)/(1+h*x*P)}
xvec<-seq(0.001,1,by=0.0001)
yvec<-R(xvec)
plot(x=xvec,y=yvec,xlab=”Attack rate (a)”,ylab=”Resource use”,type=”l”)
Now let’s imagine that in our population the attack rate in fact ranges from 0.1 in individual A to 0.9 in individual B. There are two ways to calculate the average resource use for both individuals: calculate the mean of the resource use or calculate the mean value of the variable considered in individual specimens and extrapolate the resource use for this virtual mean (I mean, “average”) individual.
Here are two individuals A and B
lines(x=c(0.1,0.9),y=c(R(0.1),R(0.9)),lty=2);points(x=c(0.1,0.9),y=c(R(0.1),R(0.9)),pch=16,cex=2)
text(c(“A”,”B”),x=c(0.1,0.9),y=c(R(0.1),R(0.9)),pos=3);lines(x=c(0.1,0.1),y=c(-1,R(0.1)),lty=2)
lines(x=c(0.9,0.9),y=c(-1,R(0.9)),lty=2)
and if you calculate the resource use based on the average of the measured element, like attack rate here:
xVI<-mean(c(0.1,0.9));yVI<-R(xVI);lines(x=c(xVI,xVI,-0.04),y=c(-1,yVI,yVI),lty=3)
points(x=xVI,y=yVI,pch=15,cex=1.5)
text(x=c(xVI,xVI,0),y=c(0.25,0,yVI)+0.1,adj=0,c(“Virtual individual:”,
“mean attack rate of A and B”,”Calculated average ecology”))
But if one calculates the average resource use of real individuals:
xRI<-mean(c(0.1,0.9));yRI<-mean(c(R(0.1),R(0.9)));lines(x=c(xRI,-0.04),y=rep(yRI,2),lty=3)
points(x=xRI,y=yRI,pch=17,cex=1.5);text(x=0,y=yRI+0.1,”Realised average ecology”,adj=0)
This may not seem too dramatic for you but imagine that instead of A, we have A’ with only a quarter of A’s attack rate:
x11(mar=c(3,3,0,0),mgp=c(1.6,0.8,0),bty=”l”)
plot(x=xvec,y=yvec,xlab=”Attack rate (a)”,ylab=”Resource use”,type=”l”)
lines(x=c(0.025,0.9),y=c(R(0.025),R(0.9)),lty=2);points(x=c(0.025,0.9),y=c(R(0.025),R(0.9)),pch=16,cex=2)
text(c(“A’”,”B”),x=c(0.025,0.9),y=c(R(0.025),R(0.9)),pos=3);lines(x=c(0.025,0.025),y=c(-1,R(0.025)),lty=2)
lines(x=c(0.9,0.9),y=c(-1,R(0.9)),lty=2)
#Virtual individual
xVI<-mean(c(0.025,0.9));yVI<-R(xVI);lines(x=c(xVI,xVI,-0.04),y=c(-1,yVI,yVI),lty=3);points(x=xVI,y=yVI,pch=15,cex=1.5)
text(x=c(xVI,xVI,0),y=c(0.25,0,yVI)+0.1,adj=0,c(“Virtual individual:”,”mean attack rate of A and B”,”Calculated average ecology”))
#Realised mean resource use
xRI<-mean(c(0.025,0.9));yRI<-mean(c(R(0.025),R(0.9)));lines(x=c(xRI,-0.04),y=rep(yRI,2),lty=3)
points(x=xRI,y=yRI,pch=17,cex=1.5);text(x=0,y=yRI+0.1,”Realised average ecology”,adj=0)


The thing is, we rarely get natural populations behaving nicely in a “typical” way, nicely covering the range of measurable values in a uniform or gaussian way. Things will be clearer with an example comparing two populations: one rather uniform, one which happens to have a bimodal distribution when it comes to the attack rate. To redraw the graphs, the code is at the bottom of the page, but just look at them first. The density of the populations is quite different, the mean attack rate, on the other hand is not so different between the two populations (in my random sample: a̅Pop1=0.501 and a̅Pop2=0.508) and the calculated mean resource use/ecological signal is similar (R̅calc_Pop1=7.148 and R̅calc_Pop2=7.175). But the actual average resource use is quite different between the two populations (R̅real_Pop1=6.366 and R̅real_Pop2=5.713).

And things get even worse if you consider the bimodal population as two separate populations (which it might well be: two populations of the same species of bird in different forests, for example, one in a park where it has access to “soft” seeds and bread crumbs brought by humans (Population “a”), the other one in a forest with limited tampering by hominoids (Population “b”),). The resource use expresses the predation on “hard to crack naturally dispersed seeds”. Clearly the population “a” would have a low attack rate for those, while population b has little else to feed on). The real resource use for the separate populations is dramatically different: R̅real_Popa=3.225 and R̅real_Popb=8.201.
The effective selective pressure on the seeds is then very different in different environments, with diverging evolutionary consequences. Now let us imagine that we do not have geographically separated populations of birds but temporally separated populations of fishes potentially preying on bivalves and other exoskeletonized organisms. I suppose you get it now: when one wishes to consider the selective pressure that a species or a group of organisms had on the evolution of its ecosystem, one should not look at the potential average pressure for an average individual (or only as a rather general indication) but at the average pressure of all individuals within naturally occurring ensembles.
Well, here’s the code for the graphs:
Pop1<-runif(n=100,min=0,max=1);Popa<-rnorm(n=50,mean=0.1,sd=0.05);Popb<-rnorm(n=50,mean=0.9,sd=0.05)
Pop2<-c(Popa,Popb)
Lay<-matrix(c(rep(1,2),rep(2,2),rep(c(3,3,4,4),4)),nrow=5,byrow=T)
dev.new(height=8,width=16);par(mar=c(3,3,0,0),mgp=c(1.6,0.8,0),bty=”l”);layout(Lay)
plot(density(Pop1,from=0,to=1,bw=0.1),main=NA,xlim=c(0,1));plot(density(Pop2,from=0,to=1,bw=0.1),main=NA,xlim=c(0,1))
yPop1<-R(Pop1);yPop2<-R(Pop2)
#First population
plot(x=Pop1,y=yPop1,xlab=”Attack rate (a)”,ylab=”Resource use”,type=”p”,pch=16,cex=0.5,ylim=c(0,9),xlim=c(0,1))
title(main=”Uniform population”,line=-1)
xmPop1<-mean(Pop1);ymPop1<-R(xmPop1);lines(x=c(xmPop1,xmPop1,-0.04),y=c(-1,ymPop1,ymPop1),lty=3)
points(x=xmPop1,y=ymPop1,pch=16,cex=1.5)
text(x=c(xmPop1,xmPop1,0)+0.05,y=c(0.25,0,ymPop1)+0.2,adj=0,
c(“Virtual individual:”,”mean attack rate of uniform population”,”Calculated average ecology”))
#Realised mean resource use
yRPop1<-mean(yPop1);lines(x=c(xmPop1,-0.04),y=rep(yRPop1,2),lty=3)
points(x=xmPop1,y=yRPop1,pch=17,cex=1.5)
text(x=0,y=yRPop1+0.12,”Realised average ecology”,adj=0)
#Next population
plot(x=Pop2,y=yPop2,xlab=”Attack rate (a)”,ylab=”Resource use”,type=”p”,pch=15,cex=0.5,ylim=c(0,9),xlim=c(0,1))
title(main=”Bimodal population”,line=-1)
xmPop2<-mean(Pop2);ymPop2<-R(xmPop2);lines(x=c(xmPop2,xmPop2,-0.04),y=c(-1,ymPop2,ymPop2),lty=3)
points(x=xmPop2,y=ymPop2,pch=15,cex=1.5)
text(x=c(xmPop2,xmPop2,0)+0.05,y=c(0.25,0,ymPop2)+0.2,adj=0,
c(“Virtual individual:”,”mean attack rate of bimodal population”,”Calculated average ecology”))
#Realised mean resource use
yRPop2<-mean(yPop2);lines(x=c(xmPop2,-0.04),y=rep(yRPop2,2),lty=3)
points(x=xmPop2,y=yRPop2,pch=17,cex=1.5)
text(x=0,y=yRPop2+0.2,”Realised average ecology”,adj=0)
yRPopa<-mean(R(Popa));yRPopb<-mean(R(Popb));xmPopa<-mean(Popa);xmPopb<-mean(Popb)
lines(x=c(xmPopa,-0.04),y=rep(yRPopa,2),lty=3)
points(x=xmPopa,y=yRPopa,pch=17,cex=1.5)
text(x=0,y=yRPopa+0.2,”Realised average ecology in population a”,adj=0)
lines(x=c(xmPopb,-0.04),y=rep(yRPopb,2),lty=3)
points(x=xmPopb,y=yRPopb,pch=17,cex=1.5)
text(x=0,y=yRPopb+0.2,”Realised average ecology in population b”,adj=0)























