SEARCH SEARCH

Article Search

Statistic analyses of PC1

Here we describe the formulation of a Generalized Linear Model for PC1 obtained from the GPA file. This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. When you click the Knit button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document. For more details on using R Markdown see <http://rmarkdown.rstudio.com>

Setting the working directory and loading the dataset:

# Clean previous loaded data
rm(list=ls()) 
# Setting the workind directory:
setwd("F:/Documentos/1.1.Proyectos/16. Patterns of variation in the ammonoid cross section/Data")

#Loading the data
df<-read.csv2("SuppData1.csv", dec =".")

Dinfining objects and building a new dataframe

PC1<-(-df$PC1)#axis flipped to concide with the text
PC2<-df$PC2
PC3<-df$PC3
PC4<-df$PC4
PC5<-df$PC5
PC6<-df$PC6

G<-df$G
O<-df$O
ST<-df$ST
MA<-df$MeanAge
A<-df$A #area in mm^2
D<-df$D #diameter in mm
H<-df$H # whorl size in mm 
CS<-df$CS
LogCS<-log(df$CS) #centroid size in mm
PLAT<-df$PLAT #Paleolatitude of the locality of origen


#newdataframe
df1<-cbind.data.frame(O,ST,G,MA,D,H,A,CS,LogCS,PLAT,PC1,PC2,PC3,PC4,PC5,PC6)

For this analysis we will use the PCs as response variables. The first analyses will focus in the first PC1 that explains around th 54% of the variance found in the sample.

To identify possible biological patterns, we will analyze the relation between PC1 and several possible predictors. In this case, to determine if there is a long term trend trough ammonoid evolutionary history ,we will use the mean age determined for each genus. For the size, which could be related to morphofunctional constraints, we will use the whorl size (or heigth). And for possible environmental trends, we will use the paleolatitude of the locality for each specimen. Further, to test potential phyllogenetic constraints we will also include some subtaxa.

Data validation

To test that the sample is representative of the original ammonoid population we can do a density plot for the number of genera trough time. This plot should mirror similar patterns to the ones observed before in other studies, such as the Sepkoski’s Disversity Curve.

library(ggplot2)
ggplot(df1, aes(x=MA)) + 
              geom_density(color="red",  fill="darkred", alpha = .1,kernel = "rectangular") + 
              labs(x = "MAR", y = "density")+theme_classic()+theme_bw()

Further validation can be done plotting the mean age for each order

library(ggplot2)

ggplot(df1, aes(MA, O )) + 
  geom_point(aes(), size = 1) +
  labs(title="Order - Mean Age",
       x=expression("Mean Age (Ma)"),
       y=expression("O"))+theme_bw()

summary for each PC and subtaxa

tapply(PC1,ST, summary)
## $`0. Agoniatitida`
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
## -0.50592 -0.28844  0.01377 -0.03345  0.21407  0.34558 
## 
## $`1. Goniatitina`
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
## -0.48039 -0.37222 -0.23186 -0.16555 -0.02003  0.38351 
## 
## $`2. Tornoceratina`
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
## -0.44023 -0.30526 -0.11062 -0.09449  0.08746  0.29524 
## 
## $`3. Clymeniida`
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## -0.4727 -0.2858 -0.1082 -0.1295 -0.0120  0.3014 
## 
## $`4. Prolecanitida`
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.1012  0.2257  0.2384  0.2388  0.2846  0.3111 
## 
## $`5. Ceratitida`
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
## -0.46422 -0.14181  0.09218  0.01167  0.18709  0.41447 
## 
## $`6. Phylloceratida`
##      Min.   1st Qu.    Median      Mean   3rd Qu.      Max. 
## -0.331253 -0.112906  0.005528 -0.035066  0.090332  0.158350 
## 
## $`7. Lytoceratina`
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
## -0.23987 -0.01796  0.13560  0.09024  0.19625  0.36280 
## 
## $`8. Ammonitina`
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
## -0.48485 -0.08792  0.07112  0.04174  0.18163  0.43718 
## 
## $`9. Ancyloceratina `
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
## -0.44193 -0.02604  0.13650  0.13771  0.39597  0.52179

Exploring the morphospace

library(plotly)
## 
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
## 
##     last_plot
## The following object is masked from 'package:stats':
## 
##     filter
## The following object is masked from 'package:graphics':
## 
##     layout
plot_ly(df1, x = ~PC1, y = ~PC2, z = ~PC3, type="scatter3d", mode="markers", color=~ST, size = 1.5) #to see a particular specimen insert symbol = ~G or name = ~G
## Warning in RColorBrewer::brewer.pal(N, "Set2"): n too large, allowed maximum for palette Set2 is 8
## Returning the palette you asked for with that many colors

## Warning in RColorBrewer::brewer.pal(N, "Set2"): n too large, allowed maximum for palette Set2 is 8
## Returning the palette you asked for with that many colors
 

PC1 plots

ggplot(df1, aes(PC1, ST)) + 
  geom_boxplot()+ 
  geom_point(aes(), size = 0.7, color="grey") +
  labs(title="PC1",
       x=expression("PC1"),
       y=expression("Sutural Type"))+
  theme(plot.title = element_text(family = "serif", face = "bold", hjust = 0.5))+theme_bw()

library(ggplot2)
ggplot(df1, aes(x =MA , y = PC1, group =ST, color = ST)) +
  geom_point(size=1.5) + xlab("Mean Age (Ma)") + 
  ylab("PC1") +  
  ggtitle("PC1 - Mean Age")+
  theme(plot.title = element_text(family = "serif", face = "bold", hjust = 0.5))+
  scale_color_manual(breaks = c("0. Agoniatitida", "1. Goniatitina", "2. Tornoceratina","3. Clymeniida","4. Prolecanitida","5. Ceratitida", "6. Phylloceratida", "7. Lytoceratina", "8. Ammonitina", "9. Ancyloceratina "),
                     values=c("red", "blue4", "darkgreen","gold4","brown","gray", "deepskyblue1", "burlywood1","slateblue","Khaki1"))+theme_bw()

Here to avoid leverage we will use the logarithm of the centroid size

library(ggplot2)
ggplot(df1, aes(x =log(CS) , y = PC1, group =ST, color = ST))  + xlab("Log(CS)") + geom_point()+
  ylab("PC1") +  
  ggtitle("PC1 - Centroid Size")+
  theme(plot.title = element_text(family = "serif", face = "bold", hjust = 0.5))+
  scale_color_manual(breaks = c("0. Agoniatitida", "1. Goniatitina", "2. Tornoceratina","3. Clymeniida","4. Prolecanitida","5. Ceratitida", "6. Phylloceratida", "7. Lytoceratina", "8. Ammonitina", "9. Ancyloceratina "),
                     values=c("red", "blue4", "darkgreen","gold4","brown","gray", "deepskyblue1", "burlywood1","slateblue","Khaki1"))+theme_bw()+stat_smooth(method = "lm",
                                                                                                                                                 formula = y ~ x,
                                                                                                                                                 geom = "smooth", size=0.7,se = F )

GLM for PC1

General linear models are used to analyze the effect of several variables with respect to a continuous variable, which is proposed to follow a statistical distribution, in this case a normal distribution. For this, several assumptions should be tested in order to confirm that the model is suitable for a specific database. Further modification of the model should be done in cases where some of these assumptions are falsified or some of the predictors are not relevant. Here we will use a simple multiple regression model.

Complete additive general linear model for PC1

m1 <- lm(PC1~MA+PLAT+LogCS+ST,data = df1)

#Note that here we use log of the centroid size to avoid leverage

Testing multicollinearity

library(car)
## Loading required package: carData
vif(m1)
##            GVIF Df GVIF^(1/(2*Df))
## MA    10.336015  1        3.214967
## PLAT   1.218166  1        1.103705
## LogCS  1.129710  1        1.062878
## ST    11.760161  9        1.146746
#GVIF values should be lower than 5 to avoid multicollinearity 

This result shows a rare case of multicollinearity in which a continuous variable (mean age) and a factor (subtaxa) are collinear. This is because the groups alternate in the geological record. A way to solve this problem is eliminating one of the variables as they are somewhat giving similar information.

m1 <- lm(PC1~log(CS)+ST+PLAT,  data = df1)

Testing normality

plot(m1)

e <- resid(m1)
shapiro.test(e)
## 
##  Shapiro-Wilk normality test
## 
## data:  e
## W = 0.99423, p-value = 0.3136

Backwards selection

The variable PLAT is not relevant.

drop1(m1, test = "F")
## Single term deletions
## 
## Model:
## PC1 ~ log(CS) + ST + PLAT
##         Df Sum of Sq    RSS     AIC F value    Pr(>F)    
## <none>               14.991 -874.91                      
## log(CS)  1   0.28469 15.275 -871.26  5.4695   0.02004 *  
## ST       9   2.89536 17.886 -839.93  6.1806 5.704e-08 ***
## PLAT     1   0.07013 15.061 -875.51  1.3473   0.24671    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Proposal of new model without PLAT

m2 <-  lm(PC1~log(CS)+ST,  data = df1)
plot(m2)

e <- resid(m2)
shapiro.test(e)
## 
##  Shapiro-Wilk normality test
## 
## data:  e
## W = 0.99368, p-value = 0.243

Summary of the final model

summary(m2)
## 
## Call:
## lm(formula = PC1 ~ log(CS) + ST, data = df1)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.53906 -0.16343  0.00496  0.15796  0.56802 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)  
## (Intercept)           0.10186    0.08929   1.141   0.2549  
## log(CS)              -0.03481    0.01550  -2.246   0.0255 *
## ST1. Goniatitina     -0.14445    0.07455  -1.938   0.0536 .
## ST2. Tornoceratina   -0.08251    0.08074  -1.022   0.3077  
## ST3. Clymeniida      -0.10984    0.10438  -1.052   0.2935  
## ST4. Prolecanitida    0.25135    0.10897   2.307   0.0218 *
## ST5. Ceratitida       0.04739    0.07610   0.623   0.5340  
## ST6. Phylloceratida   0.01202    0.10437   0.115   0.9084  
## ST7. Lytoceratina     0.12567    0.11415   1.101   0.2718  
## ST8. Ammonitina       0.08143    0.06893   1.181   0.2384  
## ST9. Ancyloceratina   0.16131    0.08083   1.996   0.0469 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.2283 on 289 degrees of freedom
## Multiple R-squared:  0.1654, Adjusted R-squared:  0.1365 
## F-statistic: 5.726 on 10 and 289 DF,  p-value: 7.608e-08

Comparisons

library(emmeans)
Comparaciones <- emmeans(m2, pairwise ~ ST|CS)
Comparaciones 
## $emmeans
## CS = 67.5:
##  ST                   emmean     SE  df lower.CL upper.CL
##  0. Agoniatitida    -0.04472 0.0661 289 -0.17480   0.0854
##  1. Goniatitina     -0.18917 0.0360 289 -0.26000  -0.1183
##  2. Tornoceratina   -0.12723 0.0479 289 -0.22156  -0.0329
##  3. Clymeniida      -0.15456 0.0815 289 -0.31493   0.0058
##  4. Prolecanitida    0.20663 0.0875 289  0.03449   0.3788
##  5. Ceratitida       0.00266 0.0383 289 -0.07264   0.0780
##  6. Phylloceratida  -0.03271 0.0807 289 -0.19157   0.1262
##  7. Lytoceratina     0.08095 0.0933 289 -0.10266   0.2646
##  8. Ammonitina       0.03671 0.0201 289 -0.00294   0.0764
##  9. Ancyloceratina   0.11659 0.0475 289  0.02303   0.2102
## 
## Confidence level used: 0.95 
## 
## $contrasts
## CS = 67.5:
##  contrast                               estimate     SE  df t.ratio p.value
##  0. Agoniatitida - 1. Goniatitina         0.1444 0.0745 289   1.938  0.6433
##  0. Agoniatitida - 2. Tornoceratina       0.0825 0.0807 289   1.022  0.9908
##  0. Agoniatitida - 3. Clymeniida          0.1098 0.1044 289   1.052  0.9886
##  0. Agoniatitida - 4. Prolecanitida      -0.2514 0.1090 289  -2.307  0.3879
##  0. Agoniatitida - 5. Ceratitida         -0.0474 0.0761 289  -0.623  0.9998
##  0. Agoniatitida - 6. Phylloceratida     -0.0120 0.1044 289  -0.115  1.0000
##  0. Agoniatitida - 7. Lytoceratina       -0.1257 0.1141 289  -1.101  0.9843
##  0. Agoniatitida - 8. Ammonitina         -0.0814 0.0689 289  -1.181  0.9747
##  0. Agoniatitida - 9. Ancyloceratina     -0.1613 0.0808 289  -1.996  0.6028
##  1. Goniatitina - 2. Tornoceratina       -0.0619 0.0573 289  -1.081  0.9862
##  1. Goniatitina - 3. Clymeniida          -0.0346 0.0877 289  -0.394  1.0000
##  1. Goniatitina - 4. Prolecanitida       -0.3958 0.0930 289  -4.257  0.0011
##  1. Goniatitina - 5. Ceratitida          -0.1918 0.0517 289  -3.710  0.0093
##  1. Goniatitina - 6. Phylloceratida      -0.1565 0.0885 289  -1.768  0.7548
##  1. Goniatitina - 7. Lytoceratina        -0.2701 0.0996 289  -2.713  0.1733
##  1. Goniatitina - 8. Ammonitina          -0.2259 0.0407 289  -5.554  <.0001
##  1. Goniatitina - 9. Ancyloceratina      -0.3058 0.0579 289  -5.277  <.0001
##  2. Tornoceratina - 3. Clymeniida         0.0273 0.0928 289   0.295  1.0000
##  2. Tornoceratina - 4. Prolecanitida     -0.3339 0.0976 289  -3.420  0.0246
##  2. Tornoceratina - 5. Ceratitida        -0.1299 0.0604 289  -2.152  0.4926
##  2. Tornoceratina - 6. Phylloceratida    -0.0945 0.0940 289  -1.005  0.9918
##  2. Tornoceratina - 7. Lytoceratina      -0.2082 0.1043 289  -1.996  0.6026
##  2. Tornoceratina - 8. Ammonitina        -0.1639 0.0514 289  -3.192  0.0495
##  2. Tornoceratina - 9. Ancyloceratina    -0.2438 0.0654 289  -3.726  0.0087
##  3. Clymeniida - 4. Prolecanitida        -0.3612 0.1182 289  -3.056  0.0729
##  3. Clymeniida - 5. Ceratitida           -0.1572 0.0895 289  -1.756  0.7617
##  3. Clymeniida - 6. Phylloceratida       -0.1219 0.1148 289  -1.062  0.9879
##  3. Clymeniida - 7. Lytoceratina         -0.2355 0.1235 289  -1.907  0.6642
##  3. Clymeniida - 8. Ammonitina           -0.1913 0.0836 289  -2.287  0.4006
##  3. Clymeniida - 9. Ancyloceratina       -0.2712 0.0932 289  -2.909  0.1078
##  4. Prolecanitida - 5. Ceratitida         0.2040 0.0949 289   2.150  0.4938
##  4. Prolecanitida - 6. Phylloceratida     0.2393 0.1191 289   2.009  0.5935
##  4. Prolecanitida - 7. Lytoceratina       0.1257 0.1274 289   0.986  0.9928
##  4. Prolecanitida - 8. Ammonitina         0.1699 0.0894 289   1.901  0.6686
##  4. Prolecanitida - 9. Ancyloceratina     0.0900 0.0982 289   0.917  0.9958
##  5. Ceratitida - 6. Phylloceratida        0.0354 0.0894 289   0.396  1.0000
##  5. Ceratitida - 7. Lytoceratina         -0.0783 0.1007 289  -0.778  0.9988
##  5. Ceratitida - 8. Ammonitina           -0.0340 0.0430 289  -0.791  0.9987
##  5. Ceratitida - 9. Ancyloceratina       -0.1139 0.0604 289  -1.886  0.6784
##  6. Phylloceratida - 7. Lytoceratina     -0.1137 0.1234 289  -0.921  0.9957
##  6. Phylloceratida - 8. Ammonitina       -0.0694 0.0832 289  -0.834  0.9980
##  6. Phylloceratida - 9. Ancyloceratina   -0.1493 0.0938 289  -1.592  0.8512
##  7. Lytoceratina - 8. Ammonitina          0.0442 0.0953 289   0.464  1.0000
##  7. Lytoceratina - 9. Ancyloceratina     -0.0356 0.1043 289  -0.342  1.0000
##  8. Ammonitina - 9. Ancyloceratina       -0.0799 0.0512 289  -1.560  0.8663
## 
## P value adjustment: tukey method for comparing a family of 10 estimates
plot(Comparaciones, comparisons = TRUE)+theme_bw()
## I bet you wanted to call this with just object[[1]] - use '[[]]' or which' if I'm wrong.
## See '? emm_list' for more information
## Warning: Comparison discrepancy in group "67.4549307296233", 2. Tornoceratina - 8. Ammonitina:
##     Target overlap = -0.0011, overlap on graph = 0.023

Predicted values

library(ggeffects)
plot(ggpredict(m2,terms = c("CS")))+theme_bw()

ggpredict(m2,terms = c("ST"))
## # Predicted values of PC1
## 
## ST               | Predicted |         95% CI
## ---------------------------------------------
## 8. Ammonitina    |      0.04 | [ 0.00,  0.08]
## 0. Agoniatitida  |     -0.04 | [-0.17,  0.08]
## 2. Tornoceratina |     -0.13 | [-0.22, -0.03]
## 5. Ceratitida    |      0.00 | [-0.07,  0.08]
## 1. Goniatitina   |     -0.19 | [-0.26, -0.12]
## 7. Lytoceratina  |      0.08 | [-0.10,  0.26]
## 4. Prolecanitida |      0.21 | [ 0.04,  0.38]
## 3. Clymeniida    |     -0.15 | [-0.31,  0.01]
## 
## Adjusted for:
## * CS = 67.45
p<-ggpredict(m2,terms = c("ST"))
p$x <- factor(p$x, levels=c("0. Agoniatitida", "1. Goniatitina", "2. Tornoceratina", "3. Clymeniida", "4. Prolecanitida", "5. Ceratitida", "6. Phylloceratida","7. Lytoceratina", "8. Ammonitina","9. Ancyloceratina "))
p <- p[order(levels(p$x)),]
p
## # Predicted values of PC1
## 
## ST               | Predicted |         95% CI
## ---------------------------------------------
## 8. Ammonitina    |      0.04 | [ 0.00,  0.08]
## 0. Agoniatitida  |     -0.04 | [-0.17,  0.08]
## 2. Tornoceratina |     -0.13 | [-0.22, -0.03]
## 5. Ceratitida    |      0.00 | [-0.07,  0.08]
## 1. Goniatitina   |     -0.19 | [-0.26, -0.12]
## 7. Lytoceratina  |      0.08 | [-0.10,  0.26]
## 4. Prolecanitida |      0.21 | [ 0.04,  0.38]
## 3. Clymeniida    |     -0.15 | [-0.31,  0.01]
## 
## Adjusted for:
## * CS = 67.45
plot(p)+coord_flip(xlim = NULL, ylim = NULL, expand = TRUE, clip = "on")+theme_bw()

library(sjPlot)
## Install package "strengejacke" from GitHub (`devtools::install_github("strengejacke/strengejacke")`) to load all sj-packages at once!
tab_model(m2)
 PC1
Predictors Estimates CI p
(Intercept) 0.10 -0.07 – 0.28 0.255
CS [log] -0.03 -0.07 – -0.00 0.025
ST [1. Goniatitina] -0.14 -0.29 – 0.00 0.054
ST [2. Tornoceratina] -0.08 -0.24 – 0.08 0.308
ST [3. Clymeniida] -0.11 -0.32 – 0.10 0.294
ST [4. Prolecanitida] 0.25 0.04 – 0.47 0.022
ST [5. Ceratitida] 0.05 -0.10 – 0.20 0.534
ST [6. Phylloceratida] 0.01 -0.19 – 0.22 0.908
ST [7. Lytoceratina] 0.13 -0.10 – 0.35 0.272
ST [8. Ammonitina] 0.08 -0.05 – 0.22 0.238
ST9 Ancyloceratina 0.16 0.00 – 0.32 0.047
Observations 300
R2 / R2 adjusted 0.165 / 0.136

Testing for interaction between the remaining variables

m3 <- lm(PC1~LogCS*ST,  data = df1)
plot(m3)

e <- resid(m3)
shapiro.test(e)
## 
##  Shapiro-Wilk normality test
## 
## data:  e
## W = 0.99516, p-value = 0.4715

Backwards selection

drop1(m3, test = "F")
## Single term deletions
## 
## Model:
## PC1 ~ LogCS * ST
##          Df Sum of Sq    RSS     AIC F value Pr(>F)
## <none>                14.338 -872.27               
## LogCS:ST  9    0.7231 15.061 -875.51   1.569 0.1242

New dataset excluding non-coiled ammonoids to propose a model involving the diameter

df2<- df1[-c(16, 27, 76, 87, 106, 108, 118, 126, 228, 232, 276, 280), ]
df2$D<- as.numeric(df2$D)
m4 <- lm(PC1~log(D)+ST,  data = df2)

summary(m4)
## 
## Call:
## lm(formula = PC1 ~ log(D) + ST, data = df2)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.56983 -0.16768  0.01599  0.15557  0.52595 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)   
## (Intercept)          -0.14747    0.09027  -1.634  0.10346   
## log(D)                0.03072    0.01679   1.830  0.06838 . 
## ST1. Goniatitina     -0.11931    0.07401  -1.612  0.10805   
## ST2. Tornoceratina   -0.04035    0.08025  -0.503  0.61546   
## ST3. Clymeniida      -0.09399    0.10326  -0.910  0.36352   
## ST4. Prolecanitida    0.28653    0.10788   2.656  0.00836 **
## ST5. Ceratitida       0.03981    0.07546   0.528  0.59824   
## ST6. Phylloceratida  -0.01325    0.10345  -0.128  0.89818   
## ST7. Lytoceratina     0.11289    0.11327   0.997  0.31980   
## ST8. Ammonitina       0.06103    0.06863   0.889  0.37462   
## ST9. Ancyloceratina   0.14631    0.09057   1.615  0.10736   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.2262 on 277 degrees of freedom
## Multiple R-squared:  0.154,  Adjusted R-squared:  0.1234 
## F-statistic: 5.041 on 10 and 277 DF,  p-value: 9.562e-07

Testing normality

plot(m4)

e <- resid(m4)
shapiro.test(e)
## 
##  Shapiro-Wilk normality test
## 
## data:  e
## W = 0.99397, p-value = 0.3074

Backwards selection

Note the diameter is not a significant factor.

drop1(m4, test = "F")
## Single term deletions
## 
## Model:
## PC1 ~ log(D) + ST
##        Df Sum of Sq    RSS     AIC F value    Pr(>F)    
## <none>              14.177 -845.28                      
## log(D)  1   0.17132 14.348 -843.82  3.3476   0.06838 .  
## ST      9   1.92549 16.102 -826.60  4.1803 4.449e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
library(sjPlot)
tab_model(m4)
 PC1
Predictors Estimates CI p
(Intercept) -0.15 -0.33 – 0.03 0.103
D [log] 0.03 -0.00 – 0.06 0.068
ST [1. Goniatitina] -0.12 -0.26 – 0.03 0.108
ST [2. Tornoceratina] -0.04 -0.20 – 0.12 0.615
ST [3. Clymeniida] -0.09 -0.30 – 0.11 0.364
ST [4. Prolecanitida] 0.29 0.07 – 0.50 0.008
ST [5. Ceratitida] 0.04 -0.11 – 0.19 0.598
ST [6. Phylloceratida] -0.01 -0.22 – 0.19 0.898
ST [7. Lytoceratina] 0.11 -0.11 – 0.34 0.320
ST [8. Ammonitina] 0.06 -0.07 – 0.20 0.375
ST9 Ancyloceratina 0.15 -0.03 – 0.32 0.107
Observations 288
R2 / R2 adjusted 0.154 / 0.123