Isle Royale Moose and Wolves

Introduction to the moose_autopsy data

Our data 1, moose_autopsy, is about the moose population on Isle Royale, a large island and National Park in Lake Superior. The isolated nature of the island makes it ideal for studying wildlife. Data were collected annually by researchers starting in 1958. However, the specific data discussed here were collected between 1991 and 1995. There are lots of moose on the Island, and for a while there were few wolves (a natural predator of moose). Eventually, new wolves found their way across the winter ice to the island, and both moose and wolf populations have since stabilized. A summary of the study can be found here.

The dataset can be found at this link. The downloadable spreadsheet has several different sheets, the first of which introduces the data. The dataset included here has information about the moose called moose_autopy. See a picture of a moose and some wolves below.

here.

Code
library(janitor)
library(readxl)
library(tidyverse)
lcl <- tempfile()
download.file(
  url = "https://isleroyalewolf.org/sites/default/files/documents/Data_wolves_moose_Isle_Royale_June2019.xlsx",
  mode = "wb",
  destfile = lcl
)
moose_autopsy <- read_xlsx(lcl, sheet = "2. autopsy file") |>
  clean_names()
  
unlink(lcl)

Taking a glimpse at the variables in this data shows shows that it has many numerical and categorical variables, as well as one nominal variable.

Code
glimpse(moose_autopsy)
Rows: 237
Columns: 36
$ autopsy                     <dbl> 2429, 2430, 2431, 2432, 2433, 2434, 2435, …
$ species                     <chr> "A. alces", "A. alces", "A. alces", "A. al…
$ sex                         <chr> "female", "male", "female", "unkn", "male"…
$ antler_condition            <chr> "N/A", "velvet", "N/A", "calf", "pedicels"…
$ age_class                   <chr> "old", "6-12 mons", "old", "6-12 mons", "o…
$ age_years                   <chr> "10", "0", "17", "0", "12", "0", "0", "9",…
$ yod                         <chr> "1993", "1993", "1993", "1993", "1993", "1…
$ yob                         <chr> "1982", "1992", "1975", "1992", "1980", "1…
$ sod                         <chr> "winter", "winter", "winter", "winter", "w…
$ cod                         <chr> "wolves", "wolves", "wolves", "wolves", "w…
$ manner_of_location          <chr> "winter study", "winter study", "winter st…
$ bone_marrow_color           <chr> "2.pink", "3.red", "2.pink", "2.pink", "un…
$ marrow_consistency          <chr> "Class 2", "Class 3, depleted", "Class 2",…
$ percent_fat                 <chr> "69", "31", "66", "33", "unkn", "48", "30"…
$ osteoporosis                <chr> "none", "none", "extensive (>2cm)", "unkn"…
$ jaw_necrosis                <chr> "severe (missing tooth, swollen jaw)", "no…
$ degree_of_arthritis         <chr> "none", "none", "moderate", "unkn", "unkn"…
$ location_of_arthritis       <chr> "none", "none", "vertebrae, sacrum", "unkn…
$ other_bone_abnormality      <chr> "none", "none", "none", "unkn", "unkn", "n…
$ snow_depth_wolf_killed_only <chr> "unkn", "unkn", "unkn", "unkn", "unkn", "u…
$ region                      <chr> "north shore, incld 48 burn", "north shore…
$ wear_class                  <chr> "unkn", "calf", "8", "calf", "unkn", "calf…
$ easting                     <chr> "371519.80869999999", "371354.62790000002"…
$ northing                    <chr> "5328588.9851000002", "5328669.9846000001"…
$ moose_abundance_in_yob      <chr> "872", "1590", "1355", "1590", "910", "159…
$ wolf_abundance_in_yob       <chr> "14", "12", "41", "12", "50", "12", "12", …
$ ms_wf_ratio_in_yob          <chr> "62.29", "132.5", "33.049999999999997", "1…
$ moose_abundance_in_yod      <chr> "1879", "1879", "1879", "1879", "1879", "1…
$ wolf_abundance_in_yod       <chr> "13", "13", "13", "13", "13", "13", "13", …
$ ms_wf_ratio_in_yod          <chr> "144.54", "144.54", "144.54", "144.54", "1…
$ nao_in_yob                  <chr> "0.8", "3.28", "1.63", "3.28", "0.56000000…
$ nao_in_yod                  <chr> "2.67", "2.67", "2.67", "2.67", "2.67", "2…
$ metapodial_fused            <chr> "fused", "not fused", "fused", "not fused"…
$ kind_of_measurement         <chr> "ROP", "ROP", "ROP", "ROP", "unkn", "ROP",…
$ nature_of_metapodial        <chr> NA, NA, NA, NA, "unkn", NA, NA, NA, NA, NA…
$ metatarsal_length           <chr> "390", "352", "374", "361", "unkn", "356",…

The data describes the moose’s pre death and post death and information about where they died. Each row in the data set represents an autopsy performed on one moose. For example, one row represents a female moose who lived between 1982 and 1993. At 10 years of age, she was classified as “old”. She was killed by wolves in the winter. The row also contains data about the moose’s physical health and the overall wolf and moose populations on Isle Royale at the time of her death.

Data Wrangling

The variables we have chosen to focus on are year of birth (yob), year of death (yod), cause of death (cod), season of death (sod), age of the moose (age), and sex of the moose (sex). Cause of death is a categorical variable and describes the way the moose died. According to the data, the most common cause of death is wolves and the least common is drowning. The next variable, season of death, tells us the season in which the moose died. According to our data, the season with most moose deaths was the winter and the season will the least moose deaths was the fall. Next, we have age. Age is a numerical variable and can be used to gain further insight about the population. Our data analysis showed that the youngest moose are most susceptible to being killed by wolves and the oldest are least susceptible to being killed by wolves. The last variable we chose to include is sex. Sex is a categorical variable and can once again allow us to gain more insight about the population. When differentiating between sex in our analysis of the season of death for the moose, we noticed that female moose tended to have a longer lifespan than male moose.

We also removed observations that represented autopsies of other species (e.g, foxes, wolves, etc.) and also removed observations where information about age, sex, season of death or cause of death were unknown. A preview of the data set is shown below in Table 1.

Code
moose_autopsy <- moose_autopsy |>
  filter(species == "A. alces") |>
  select(yob, yod, cod, sod, age_years, sex) |>
  filter(sex != "ck card") |>
  filter(sex != "omit") |>
  filter(sex != "unkn") |>
  filter(cod != "unkn") |>
  filter(age_years != "unkn ad") |>
  filter(sod != "unkn")
  
head(moose_autopsy) |>
  kable()
Table 1: First six rows of the moose_autopsy data set.
yob yod cod sod age_years sex
1982 1993 wolves winter 10 female
1992 1993 wolves winter 0 male
1975 1993 wolves winter 17 female
1980 1993 wolves winter 12 male
1992 1993 wolves winter 0 male
1974 1993 wolves winter 18 female

Summary Statistics and Tables

The following tables aim to give a broad overview of the dataset and explore the distribution of data within select variables.

Table 2 displays the number of moose born each year data was collected in our data set.

Code
library(knitr)
moose_autopsy |>
  group_by(yob) |>
  summarise(count = n()) |>
  kable()
Table 2: Number of moose born each year on Isle Royale from 1972 to 1994.
yob count
1972 1
1974 2
1975 1
1976 2
1977 1
1979 3
1980 1
1981 7
1982 10
1983 12
1984 7
1985 3
1986 1
1988 2
1989 1
1990 3
1991 2
1992 9
1993 14
1994 8
unkn 5

Table 3 shows the number of moose that died per year on Isle Royale bewtween 1991 and 1995.

Code
library(knitr)
moose_autopsy |>
  group_by(yod) |>
  summarise(count = n()) |>
  kable()
Table 3: Year of death for Isle Royale Moose, 1991-1995.
yod count
1992 3
1993 25
1994 31
1995 31
unkn 5

Table 4 displays the sex and season of death for moose on Isle Royale for the duration of the study.

Code
moose_autopsy |>
  skimr::skim(sex, sod) |>
  rename(`Missing Obs.` = n_missing)
Table 4: Sex of moose and season of death
Data summary
Name moose_autopsy
Number of rows 95
Number of columns 6
_______________________
Column type frequency:
character 2
________________________
Group variables None

Variable type: character

skim_variable complete_rate min max empty n_unique whitespace Missing Obs.
sex 1 4 6 0 2 0 0
sod 1 4 6 0 4 0 0

Although the documentation of moose autopsies were thorough, there are still meaningful amounts of missing data. However, the amount of data and number of variables gives ample opportunities for exploring interesting patterns, even after filtering out missing or unknown data.

Basic Graphics

The following graphs help to visualize the data and some of the trends within the data.

Average age at death relative to sex

This first graph displays the between the sex of moose and their age of death, with sex on the x-axis and age of death on the y-axis. The observations are colored by the season the moose died.

Code
library(mosaic)
moose_autopsy2 <- moose_autopsy |>
  filter(sex == "female" | sex == "male") |>
  filter(age_years != "unkn") |>
  filter(age_years != "unkn ad") |>
  filter(sod != "unkn")
Code
library(ggplot2)
library(dplyr)
moose_autopsy2$age_years <- as.numeric(as.character(moose_autopsy2$age_years))
ggplot(data = moose_autopsy2, aes(x = sex, y = age_years)) +
  geom_jitter(width = 0.1) +
  aes(color = sod) +
  theme(legend.position = "right") +
  labs(title = "Age and Season of Death by Sex", x = "Sex of Moose", y = "Age of Death in Years", color = "Season of Death")
Figure 1: A visualization of the relationship between sex and age at death, colored by season of death.

In Figure 1, we observe that a large proportion of both female and male moose died very young. However, after reaching maturity around age 5, the age of death in female moose was relatively dispersed while for male moose, it clustered at around age 10. This suggests a possible bimodal distribution in the age_years variable. When colored by season, it becomes apparent that the majority of moose died in winter.

Cause of death of moose

This figure explores the frequency of different causes of death for moose on Isle Royale.

Code
library(forcats)
ggplot(data = moose_autopsy3, aes(x = cod, y = num_mooses)) +
  geom_col() +
  aes(forcats::fct_reorder(cod, num_mooses)) +
  theme(
    axis.text.x = element_text(angle = 45, hjust = 1)
  ) +
  labs(title = "Cause of death of moose on Isle Royale", x = "Cause of death", y = "Number of moose")
Figure 2: Causes of death of Isle Royale moose

Figure 2, we observe that other than “unknown”, the most common cause of death in our data set was predation by wolves, and the least common cause of death was drowning. However, we cannot tell from this graph whether male moose were more susceptible to wolves than female moose. However, due to a cluster of death around age 10, we wonder if the bigger body size of male moose made them a more attractive target to wolves. In the next figure, we will explore whether male moose were more susceptible to wolves.

Susceptibility to Wolves

Code
library(knitr)
moose_autopsy4 <- moose_autopsy |>
  filter(cod == "wolves" | cod == "prob wolves") |>
  group_by(sex) |>
  summarize(number = n())
kable(moose_autopsy4)
Table 5: Suspectibility to Wolves due to sex
sex number
female 21
male 31

Table 5 displays the number of male and female moose killed by wolves in the data set. There does not appear to have been a meaningful relationship between sex and susceptibility to wolves.

Age and predation by wolves

Code
moose_autopsy5 <- moose_autopsy |>
  filter(cod == "wolves" | cod == "prob wolves") |>
  filter(age_years != "unrec cf") |>
  group_by(age_years) |>
  summarize(number = n())
moose_autopsy5$age_years <- as.numeric(as.character(moose_autopsy5$age_years))
ggplot(data = moose_autopsy5, aes(x = age_years, y = number)) +
  geom_col() +
  labs(x = "Moose age in years", y = "Number of moose killed by wolves")
Figure 3: A figure displaying the relationship between age and susceptibility to predation by wolves.

Figure 3 shows that foals were the most susceptible to wolves. Interestingly, it seems that wolves are more likely to target mid-aged adult moose instead of old moose, even though they may have been harder to prey on.

Ethics

This data comes from the Isle Royale Moose study, a decades-long observational study of the populations of moose and wolves on Isle Royale in Lake Superior. In fact, this study is the longest ever continuous study of predator-prey interactions. The study receives institutional support from the National Science Foundation, the National Park System, and Michigan Technological University. This data was collected to improve scientific understanding of predator-prey interactions in a relatively controlled system - an island. This study has allowed scientists to illuminate that ecological systems are characterized not by perfect balance, but by constant change (Vucetich 2022).

Dozens of papers have been published with data from this study, including our specific data set (Hoy, Peterson, and Vucetich 2018). This data has informed resource management decisions on Isle Royale, including the relocation of 19 wolves from Minnesota, Ontario, and Michigan from 2018-2019 after their populations on the island reached critically low levels. The data from the study showed the importance of wolves to the ecosystem and the declining health and genetic diversity among existing wolves, and thus motivated the decision (U.S. National Park Service 2022).

Researchers began collecting data from the island in 1958 and have never stopped. The initial plan was to continue the study for 10 years, however, as time passed, they learned the value of continuing the study, since they were gaining so much more from continuous observation. This data can be used to better understand other environments around the world and the relationships between the animals that live there. Nature is deeply unpredictable. There are nearly infinite confounding variables in the wolf-moose population dynamics. The data will never be complete, and as such, any decision based on it requires some degree of risk. Misinterpretation of the data, or even applications of ideas from the data that turn out to be based in false assumptions could lead to ecologically destructive actions by natural resource managers.

Furthermore, researchers and natural resource managers could potentially attempt to use the data to predicted ecological patterns, and make resource management decisions according to this inference. However, as stated by the Isle Royale moose and wolf researchers, this is not how the data should should be used (Vucetich 2022). Instead, its purpose is to explain events and deepen our understanding of what has happened in the past.

Responding to ethical considerations

According to Vucetich (2022), this data should not be used to perform inferential statistics due to the complexity of the Isle Royale ecosystem and the nearly infinite amount of confounding and potentially unresearched variables. In the context of SDS 100, responding to this ethical consideration would involve not using the data set to teach or explore model-building or inferential statistics. Thus, we suggest that when presenting the data, a disclaimer should be included to acknowledge that the purpose of studying this data should be to explain events and deepen our understanding of what has happened in the past, not to predict the ecosystem dynamics of Isle Royale.

The second ethical consideration with this data set involves the potentially harmful impacts of using this data to make resource management decisions. Since students in SDS 100 will not being making these decisions, we do not believe it is within the scope of this class to directly address this concern. We believe that following the suggestions of the previous paragraph will sufficiently address this concern.

Recommendations for use in SDS 100

Out of all the datasets we worked with, we believe that the moose dataset would be the best to include in SDS 100. First, there are various sheets to look at within this data set, which gives us a large variety of variables to work with. It also would give the opportunity for students to learn how to work with Excel files with multiple linked spreadsheets during Lab 6: Importing Data. Additionally, some of the variables share a strong correlation with each other which allows for great visualizations like scatterplots, histograms, and more. This means that it would make for a data set to use for Lab 2: Basic Data Visualizations. The study of the island has been carried out by scientists over a 50-year period, so it is rich in samples. The set is well-organized with relatively little missing data, so it is easy to work with. This could work well for teaching Lab 4: Summarizing Data, given the sheer amount of information and the variety of different variables you could filter or subset the data by. Most of our statistical analysis was done using functions in packages we learned about in class, with minimal wrangling needed. Finally, this is a well-studied dataset. A great deal of research has already been published using this data set. This gives plenty of context regarding the dataset, something we found to be lacking in many of the data sets we used in class.

Overall, this data set is well organized and relatively complete, with understandable variables and clear relationships between variables. Together, these make for a great dataset for beginner statisticians.

References

Hoy, Sarah R., Rolf O. Peterson, and John A. Vucetich. 2018. “Climate Warming Is Associated with Smaller Body Size and Shorter Lifespans in Moose Near Their Southern Range Limit.” Global Change Biology 24 (6): 2488–97. https://doi.org/10.1111/gcb.14015.
U.S. National Park Service. 2022. “Why Relocate Wolves to Isle Royale?” https://www.nps.gov/isro/learn/why-relocate-wolves-to-isle-royale.htm.
Vucetich, John A. 2022. “About the Project: Overview.” The Wolves and Moose of Isle Royale. https://isleroyalewolf.org/overview/overview/at_a_glance.html.

Footnotes

  1. Data collected 1991-1995, during which time the wolf population was low and the moose population saw dramatic fluctuations.↩︎