6  Eating habits of fleas

Last modified on 25. November 2025 at 20:10:00

“A quote.” — Dan Meyer

6.1 General background

Based on standard methods in flea research and experimental entomology, as well as a similar published experiment, the following three types of food for adult cat fleas are possible, representing different nutritional conditions:

Blood: This is the natural and optimal food source for adult fleas.Often, defibrinated or anticoagulated animal blood (e.g. bovine blood, rabbit blood) is used for this purpose, which is offered in special in vitro feeding systems (e.g. through a membrane).Expectation: Fleas that are optimally nourished should show the greatest jumping distance.

Sugar water: Often serves as a ‘control feed’ or as a feed that provides energy (sugar) but lacks essential nutrients (such as proteins from blood).Expectation: Jumping distance could be reduced due to the lack of blood and thus the proteins important for reproduction, which could impair physiological fitness.

Ketchup - a nutrient-poor or unsuitable food: This option is used to simulate poor, incomplete or stressful nutritional conditions.In a similar documented experiment, ketchup (a combination of sugar, vinegar and minimal other substances, but no blood) was used as the third feed.Expectation: It can be assumed that fleas will show the shortest jumping distance under these conditions, as they lack both essential nutrients and the necessary energy.

6.2 Theoretical background

6.3 R packages used

6.4 Data

6.4.1 Linear

R Code [show / hide]
jump_weight_feeding_tbl <- expand_grid(f = c(0, 1), 
                                       x = abs(rnorm(21, 5, 4))) |> 
  mutate(y = 10 + 1.2 * x + 10 * f + rnorm(42, 0, 2),
         f = factor(f, labels = c("sugar_water", "blood")))  |>
  mutate_if(is.numeric, round, 1) |> 
  rename(weight = x, jumplength = y, feeding = f) 
Figure 6.1: foo (A) foo (B) foo

6.4.2 Non linear

R Code [show / hide]
jump_weight_non_linear_tbl <- expand_grid(f = c(0, 1), 
                                          x = abs(rnorm(42, 2.5, 2.5))) |> 
  mutate(y = 25 - 4*f - 21 * exp(-0.2 * x^2 - 1.1 * f) + rnorm(84, 0, 1),
         f = factor(f, labels = c("sugar_water", "blood")))  |>
  mutate_if(is.numeric, round, 1) |> 
  rename(weight = x, jumplength = y, feeding = f) 
Figure 6.2: foo (A) foo (B) foo

6.4.3 International study

Degree of Urbanization of the United nations (rural as low-dense areas, town as semi-dense areas, cities as high-dense areas)

Figure 6.3: foo (A) foo (B) foo

ODer das ganze mal mit Bodylength?

R Code [show / hide]
n_obs <- 41
jump_international_grid <- expand_grid(country = 1:9) |> 
  mutate(mean_country = rnorm(9, 0, 4)) |> 
  expand_grid(site = 1:3) |> 
  mutate(mean_site = rnorm(27, 0, 4)) |> 
  expand_grid(rep = 1:n_obs) |> 
  mutate(bodyweight = abs(rnorm(n = (9*3*n_obs), 2.5, 2.5)),
         jumplength = 10 + 1.5 * bodyweight + mean_country + mean_site + rnorm(n = (9*3*n_obs), 0, 3))

DE = Germany FR = France IN = India US = United States CN = China AU = Australia PE = Peru SE = Sweden ZA = South Africa

R Code [show / hide]
jump_international_tbl <- jump_international_grid |> 
  select(bodyweight, country, site, jumplength) |> 
  mutate(country = factor(country, labels = c("DE", "FR", "AU",
                                              "IN", "US", "CN",
                                              "PE", "SE", "ZA")),
         site = factor(site, labels = c("rural", "semi-dense", "city"))) |> 
  mutate_if(is.numeric, round, 2)
Figure 6.4: foo (A) foo (B) foo
R Code [show / hide]
library(lme4)
Warning: package 'lme4' was built under R version 4.4.1
Loading required package: Matrix
Warning: package 'Matrix' was built under R version 4.4.1

Attaching package: 'Matrix'
The following objects are masked from 'package:tidyr':

    expand, pack, unpack
R Code [show / hide]
lmer(jumplength ~ bodyweight + (site|country), data = jump_international_tbl)
Linear mixed model fit by REML ['lmerMod']
Formula: jumplength ~ bodyweight + (site | country)
   Data: jump_international_tbl
REML criterion at convergence: 5640.55
Random effects:
 Groups   Name           Std.Dev. Corr       
 country  (Intercept)    5.321               
          sitesemi-dense 4.306    -0.34      
          sitecity       4.251    -0.35  0.36
 Residual                2.926               
Number of obs: 1107, groups:  country, 9
Fixed Effects:
(Intercept)   bodyweight  
      8.811        1.532  
R Code [show / hide]
c("#0D0887FF", "#5402A3FF", "#8B0AA5FF", "#B93289FF",
  "#DB5C68FF", "#F48849FF", "#FEBC2AFF", "#F0F921FF")
[1] "#0D0887FF" "#5402A3FF" "#8B0AA5FF" "#B93289FF" "#DB5C68FF" "#F48849FF"
[7] "#FEBC2AFF" "#F0F921FF"

6.5 Alternatives

Further tutorials and R packages on XXX

R Code [show / hide]
expand_grid(obs = c(1, 3, 2)) |> 
  rowwise() |> 
  mutate(foo = list(expand_grid(1:obs))) |> 
  unnest(cols = c(foo))
# A tibble: 6 × 2
    obs `1:obs`
  <dbl>   <int>
1     1       1
2     3       1
3     3       2
4     3       3
5     2       1
6     2       2

6.6 Glossary

term

what does it mean.

6.7 The meaning of “Models of Reality” in this chapter.

  • itemize with max. 5-6 words

6.8 Summary

References