Skip to content

Commit 3729a73

Browse files
authored
Add files via upload
1 parent 97aecba commit 3729a73

File tree

3 files changed

+305
-0
lines changed

3 files changed

+305
-0
lines changed

Bigman et al 2018 J Morph Code.R

Lines changed: 154 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,154 @@
1+
# Code for analyses in Bigman et al. (2018) Journal of Morphology
2+
3+
# Please cite the following if code or data is used:
4+
# Bigman JS, Pardo SA, Prinzing TS, Dando M, Wegner NC, Dulvy NK.
5+
# Ecological lifestyles and the scaling of shark gill surface area.
6+
# Journal of Morphology. 2018;1–9. https://doi.org/10.1002/jmor.20879
7+
8+
# packages
9+
# devtools::install_github("dgrtwo/broom")
10+
library(tidyverse)
11+
library(tidyr)
12+
library(cowplot)
13+
library(ggplot2)
14+
library(MASS)
15+
library(broom)
16+
library(lme4)
17+
library(nlme)
18+
library(forcats)
19+
20+
#### Data wrangling ####
21+
22+
## Mustelus gill surface area data
23+
MusCaliGSA <- read.csv("MustelusCalifornicusGSA_Data.csv", header = TRUE,
24+
strip.white = TRUE) %>% tbl_df() # smoothhound raw data
25+
## Gill surface area data for other 11 sharks
26+
AllSharkData <- read.csv("Bigman_raw_data_combined.csv", header = TRUE,
27+
strip.white = TRUE) %>% tbl_df
28+
29+
## Mustelus data transformations
30+
31+
#Gill surface area
32+
MusCaliGSA$MassG <- (MusCaliGSA$MassKG*1000)
33+
MusCaliGSA$Log10MassG <- log10(MusCaliGSA$MassG)
34+
MusCaliGSA$Log10GSAcm2 <- log10(MusCaliGSA$GSAcm2)
35+
36+
# Total filament length
37+
MusCaliGSA$Log10FilamentLength <- log10(MusCaliGSA$TotalFilamentLength2Sides)
38+
39+
# Average lamellar frequency
40+
MusCaliGSA$Log10LamFreq <- log10(MusCaliGSA$LamellarFrequency)
41+
42+
# Mean bilateral lamellar surface area
43+
MusCaliGSA$Log10LamSA <- log10(MusCaliGSA$BilateralLamellarSA)
44+
45+
46+
## Remaining shark data transformations
47+
AllSharkData$Log10MassG <- log10(AllSharkData$MassG)
48+
AllSharkData$Log10GSAcm2 <- log10(AllSharkData$GSAcm2)
49+
50+
AllSharkData$Log10CenterMassG <- scale(AllSharkData$Log10MassG,
51+
center = log10(5000), scale = FALSE)
52+
53+
54+
#### Analyses ####
55+
56+
## Mustelus gill surface area
57+
58+
# Total gill surface area regression and prediction
59+
GSA.mass.log <- lm(Log10GSAcm2 ~ Log10MassG, data = MusCaliGSA)
60+
summary(GSA.mass.log)
61+
62+
predict <- predict(GSA.mass.log, interval="prediction")
63+
MusCaliGSA <- cbind(MusCaliGSA, predict)
64+
MusCaliGSA$Fit.NoLog <- 10^(MusCaliGSA$fit)
65+
MusCaliGSA$Upper.NoLog <- 10^(MusCaliGSA$upr)
66+
MusCaliGSA$Lower.NoLog <- 10^(MusCaliGSA$lwr)
67+
68+
69+
# Total filament length regression and prediction
70+
FilamentLength.mass <- lm(Log10FilamentLength ~ Log10MassG, data = MusCaliGSA)
71+
summary(FilamentLength.mass)
72+
73+
predict.FilamentLengthLog10 <- predict(FilamentLength.mass, interval="prediction")
74+
MusCaliGSA.FilamentLength <- data.frame(MusCaliGSA$MassG, MusCaliGSA$TotalFilamentLength2Sides,
75+
MusCaliGSA$Log10FilamentLength, MusCaliGSA$Log10MassG,
76+
predict.FilamentLengthLog10)
77+
MusCaliGSA.FilamentLength$FitFilLength.NoLog <- 10^(MusCaliGSA.FilamentLength$fit)
78+
MusCaliGSA.FilamentLength$UpperFilLength.NoLog <- 10^(MusCaliGSA.FilamentLength$upr)
79+
MusCaliGSA.FilamentLength$LowerFilLength.NoLog <- 10^(MusCaliGSA.FilamentLength$lwr)
80+
81+
82+
# Average lamellar frequency regression and prediction
83+
LamFreq.mass <- lm(Log10LamFreq ~ Log10MassG, data = MusCaliGSA)
84+
summary(LamFreq.mass)
85+
86+
predict.Log10LamFreq <- predict(LamFreq.mass, interval="prediction")
87+
MusCaliGSA.LamFreq <-data.frame(MusCaliGSA$MassG, MusCaliGSA$LamellarFrequency,
88+
MusCaliGSA$Log10MassG, MusCaliGSA$Log10LamFreq,
89+
predict.Log10LamFreq)
90+
MusCaliGSA.LamFreq$FitFilLength.NoLog <- 10^(MusCaliGSA.LamFreq$fit)
91+
MusCaliGSA.LamFreq$UpperFilLength.NoLog <- 10^(MusCaliGSA.LamFreq$upr)
92+
MusCaliGSA.LamFreq$LowerFilLength.NoLog <- 10^(MusCaliGSA.LamFreq$lwr)
93+
94+
95+
# Mean bilateral lamellar surface area regression and prediction
96+
LamSA.mass <- lm(Log10LamSA ~ Log10MassG, data = MusCaliGSA)
97+
summary(LamSA.mass)
98+
99+
predict.Log10LamSA <- predict(LamSA.mass, interval="prediction")
100+
MusCaliGSA.LamSA <- data.frame(MusCaliGSA$MassG, MusCaliGSA$BilateralLamellarSA,
101+
MusCaliGSA$Log10LamSA, MusCaliGSA$Log10MassG,
102+
predict.Log10LamSA)
103+
MusCaliGSA.LamSA$FitFilLength.NoLog <- 10^(MusCaliGSA.LamSA$fit)
104+
MusCaliGSA.LamSA$UpperFilLength.NoLog <- 10^(MusCaliGSA.LamSA$upr)
105+
MusCaliGSA.LamSA$LowerFilLength.NoLog <- 10^(MusCaliGSA.LamSA$lwr)
106+
107+
108+
#### Scaling of gill surface area for all 12 sharks ####
109+
110+
## Regressions to estimate coefficients
111+
fitted_models.Log10CenterMass <- AllSharkData %>%
112+
group_by(Species) %>%
113+
do(fits.Log10CenterMass = lm(Log10GSAcm2 ~ Log10CenterMassG, data = .))
114+
115+
model.output.Log10CenterMass <- fitted_models.Log10CenterMass %>%
116+
tidy(fits.Log10CenterMass)
117+
fits.Log10CenterMass <- fitted_models.Log10CenterMass %>%
118+
augment(fits.Log10CenterMass)
119+
120+
## Do intercepts and slopes differ across species?
121+
mod1 <- lm(Log10GSAcm2 ~ Log10CenterMassG * Species - 1, data = AllSharkData) #
122+
coef(mod1)
123+
summary(mod1)
124+
125+
## Do ecological lifestyle traits differ across species?
126+
127+
# 1. Caudal fin aspect ratio
128+
ActivityLevelDifferences <- lme(Log10GSAcm2 ~ Log10CenterMassG * AspectRatio,
129+
random = ~ Log10CenterMassG | Species,
130+
data = AllSharkData, control = lmeControl(opt = "optim"))
131+
coef(ActivityLevelDifferences)
132+
summary(ActivityLevelDifferences)
133+
134+
# 2. Habitat type
135+
HabitatDifferences <- lme(Log10GSAcm2 ~ Log10CenterMassG * HabitatType,
136+
random = ~ Log10CenterMassG | Species,
137+
data = AllSharkData, control = lmeControl(opt = "optim"))
138+
coef(HabitatDifferences)
139+
summary(HabitatDifferences)
140+
141+
# 3. Maximum size
142+
MaxSizeDifferences <- lme(Log10GSAcm2 ~ Log10CenterMassG * LogMaxMassG,
143+
random = ~ Log10CenterMassG | Species,
144+
data = AllSharkData, control = lmeControl(opt = "optim"))
145+
coef(MaxSizeDifferences)
146+
summary(MaxSizeDifferences)
147+
148+
149+
150+
151+
152+
153+
154+

0 commit comments

Comments
 (0)