Our dataset is composed by 263 individuals and 16 variables, including ID, Sex, 4 Morphological or non-metric (x2 for left and right side) and 3 Euclidian distance or metric (x2 for left and right side).
# Read dataset
inventory <- read.csv("./DistalHumeriData.csv", na.strings = '')
str(inventory) # structure of dataset
## 'data.frame': 263 obs. of 16 variables:
## $ ID : Factor w/ 263 levels "CEIXXI001","CEIXXI002",..: 1 2 3 4 5 6 7 8 9 10 ...
## $ Sex : Factor w/ 2 levels "F","M": 1 1 1 1 1 2 1 1 2 1 ...
## $ TrochlearConstructionL: Factor w/ 3 levels "F","M","U": 1 1 2 1 1 2 2 1 2 NA ...
## $ TrochlearSymmetryL : Factor w/ 3 levels "F","M","U": 2 3 3 1 3 2 NA 3 2 NA ...
## $ OleacronFossaShapeL : Factor w/ 3 levels "F","M","U": 3 1 1 1 1 2 1 2 2 1 ...
## $ AngleMedialEpycondyleL: Factor w/ 3 levels "F","M","U": 3 NA NA NA 1 2 NA NA 2 NA ...
## $ TrochlearConstructionR: Factor w/ 3 levels "F","M","U": 1 1 NA 1 NA 2 2 NA 2 2 ...
## $ TrochlearSymmetryR : Factor w/ 3 levels "F","M","U": 2 1 NA 1 NA 2 1 NA 3 1 ...
## $ OleacronFossaShapeR : Factor w/ 3 levels "F","M","U": 2 1 NA 1 NA 3 NA NA 3 1 ...
## $ AngleMedialEpycondyleR: Factor w/ 3 levels "F","M","U": 2 2 NA 1 NA 2 3 NA 2 1 ...
## $ MaxCondL : int 52 47 47 44 51 67 40 47 65 40 ...
## $ CapitulumPosteriorL : int 23 22 NA NA 23 28 23 24 28 NA ...
## $ CapitulumAnteriorL : int 37 37 NA 35 36 47 NA 36 46 NA ...
## $ MaxCondR : int 44 51 NA NA NA 69 50 NA 64 53 ...
## $ CapitulumPosteriorR : int 24 23 NA NA NA 28 26 NA 29 24 ...
## $ CapitulumAnteriorR : int NA 37 NA NA NA 47 NA NA 44 39 ...
inventoryL <- inventory[,c(2:6,11:13)] # Extracting left side variables
inventoryR <- inventory[,c(2,7:10,14:16)] # Extracting right side variables
However, data could not be colected for many individuals. There are also more left humeri than right ones. NA abound in the dataset, so we will remove these per-variable, because if we only considered complete rows, our n would be drastically reduced.
In the morphological variables we consider F as the female morphotype, U (undeterminated) as an intermediate or non-discriminative morhotype, and M as the male morphotype.
library(ggplot2)
TCL <- na.omit(inventoryL[, c("Sex", "TrochlearConstructionL")]) # Remove NAs
g1 <- ggplot(TCL, aes(x = TrochlearConstructionL, fill = Sex)) + geom_bar() + theme_minimal()
TCR <- na.omit(inventoryR[, c("Sex", "TrochlearConstructionR")]) # Remove NAs
g2 <- ggplot(TCR, aes(x = TrochlearConstructionR, fill = Sex)) + geom_bar() + theme_minimal()
library(gridExtra)
grid.arrange(g1, g2, ncol = 2)
TSL <- na.omit(inventoryL[, c("Sex", "TrochlearSymmetryL")]) # Remove NAs
g3 <- ggplot(TSL, aes(x = TrochlearSymmetryL, fill = Sex)) + geom_bar() + theme_minimal()
TSR <- na.omit(inventoryR[, c("Sex", "TrochlearSymmetryR")]) # Remove NAs
g4 <- ggplot(TSR, aes(x = TrochlearSymmetryR, fill = Sex)) + geom_bar() + theme_minimal()
grid.arrange(g3, g4, ncol = 2)
OFSL <- na.omit(inventoryL[, c("Sex", "OleacronFossaShapeL")]) # Remove NAs
g5 <- ggplot(OFSL, aes(x = OleacronFossaShapeL, fill = Sex)) + geom_bar() + theme_minimal()
OFSR <- na.omit(inventoryR[, c("Sex", "OleacronFossaShapeR")]) # Remove NAs
g6 <- ggplot(OFSR, aes(x = OleacronFossaShapeR, fill = Sex)) + geom_bar() + theme_minimal()
grid.arrange(g5, g6, ncol = 2)
AMEL <- na.omit(inventoryL[, c("Sex", "AngleMedialEpycondyleL")]) # Remove NAs
g7 <- ggplot(AMEL, aes(x = AngleMedialEpycondyleL, fill = Sex)) + geom_bar() + theme_minimal()
AMER <- na.omit(inventoryR[, c("Sex", "AngleMedialEpycondyleR")]) # Remove NAs
g8 <- ggplot(AMER, aes(x = AngleMedialEpycondyleR, fill = Sex)) + geom_bar() + theme_minimal()
grid.arrange(g7, g8, ncol = 2)