context("Testing of the rarefaction function")
test_that("mobr rarefaction function values are equivalent to true/accepted values", {
# INDIVIDUAL BASED RAREFACTION TESTING (EXPECTATIONS 1 THROUGH 5)
# Caluculate SAD values that should be equivalent to the SAD values provided in Table 2 of Stuart H. Huberts
# paper The Nonconcept on Species Diversity:A Critique and Alternative Parameters (1971)
# SAD object numbers (i.e. sad1, sad2,...) correspond with the SAD values provided in Table 2
# NOTE: sad3 values can be found in Table 1 of Howard L. Sanders paper Marine Benthic Diversity: A Comparative Study (1968)
# Link: http://terascan.smast.umassd.edu/nasdata/archive/Bisagni_Data/students/abrunner/My%20Documents/Classes/ECOS630/papers/Sanders1968.pdf
# First SAD value
sad1 = rep(10, 100)
# Calculate rarefaction value and convert to dataframe for double value reference
sad1DF = as.data.frame(rarefaction(sad1, 'IBR', 100))
# Second SAD value
sad2 = c(76, rep(50, 5), rep(20, 27-7), rep(5, 77-27), rep(1, 101-77))
# Calculate rarefaction value and convert to dataframe for double value reference
sad2DF = as.data.frame(rarefaction(sad2, 'IBR', 100))
# Third SAD value
sad3 = c(365, 112, 81, 61, 55, 46, 40, 38, 29, 23, 21, 15, 13, 12, 10, 8, 7, 7, 6, 6, 5, 5, 5, 4, 3, 3, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1)
# Calculate rarefaction value and convert to dataframe for double value reference
sad3DF = as.data.frame(rarefaction(sad3, 'IBR', 100))
# Fourth SAD value
sad4 = c(505, rep(5, 99))
# Calculate rarefaction value and convert to dataframe for double value reference
sad4DF = as.data.frame(rarefaction(sad4, 'IBR', 100))
# Fifth SAD value
sad5 = c(901, rep(1, 99))
# Calculate rarefaction value and convert to dataframe for double value reference
sad5DF = as.data.frame(rarefaction(sad5, 'IBR', 100))
# EXPECTATION 1
# Check equivalence of first SAD value with value from table - 65.3
# Calculated rarefaction value has been rounded to nearest tenth to match table value
expect_equal(round(sad1DF$`rarefaction(sad1, "IBR", 100)` , digits = 1), 65.3)
# EXPECTATION 2
# Check equivalence of second SAD value with value from table - 46.5
# Calculated rarefaction value has been rounded to nearest tenth to match table value
expect_equal(round(sad2DF$`rarefaction(sad2, "IBR", 100)`, digits = 1), 46.5)
# EXPECTATION 3
# Check equivalence of second SAD value with value from table - 20.4
# Calculated rarefaction value has been rounded to nearest tenth to match table value
expect_equal(round(sad3DF$`rarefaction(sad3, "IBR", 100)`, digits = 1), 20.4)
# EXPECTATION 4
# Check equivalence of second SAD value with value from table - 41.6
# Calculated rarefaction value has been rounded to nearest tenth to match table value
expect_equal(round(sad4DF$`rarefaction(sad4, "IBR", 100)`, digits = 1), 41.6)
# EXPECTATION 5
# Check equivalence of second SAD value with value from table - 10.9
# Calculated rarefaction value has been rounded to nearest tenth to match table value
expect_equal(round(sad5DF$`rarefaction(sad5, "IBR", 100)`, digits = 1), 10.9)
# SPATIAL SAMPLE-BASED RAREFACTION (sSBR) TESTING (EXPECTATIONS 6 THROUGH 9)
# Compare mobr spatial, sample-based rarefaction function against hand calculated values
# but only at the sampling efforts where all possible sSBRs completely
# overlap (i.e., no variance in expected S)
# Community matrix used for calculation
comms = cbind(
c(1, 1, 1, 0, 0, 0),
c(0, 1, 1, 1, 0, 0),
c(0, 0, 1, 1, 1, 0),
c(0, 0, 0, 0, 1, 1),
c(0, 0, 1, 0, 1, 0),
c(0, 0, 0, 0, 1, 1),
c(0, 0, 0, 0, 0, 1))
# Calculate rarefaction values using mobr rarefaction function
# Convert values to dataframe for easy referencing in test functions
rarefaction_values = as.data.frame(rarefaction(comms, 'sSBR',
coords = cbind(1:6,1),
latlong = F,
spat_algo = "kNN"))
# NOTE:
# Rarefaction values to compare are at indeces: 1, 3, 5, and 6
# Calculations for these values should remain constant with no deviation from the specified double/integer value
# EXPECTATION 6
# Check equivalence of rarefaction function generated value at index 1 to the decimal: 2.667
# Rounding was done to 3 decimal places
expect_equal(round(rarefaction_values[1,1], digits = 3), 2.667)
# EXPECTATION 7
# Check equivalence of rarefaction function generated value at index 3 to the integer: 5
expect_equal(rarefaction_values[3,1], 5)
# EXPECTATION 8
# Check equivalence of rarefaction function generated value at index 5 to the double: 6.500
# Rounding was done to 3 decimal places
expect_equal(round(rarefaction_values[5,1], digits = 3), 6.500)
# EXPECTATION 9
# Check equivalence of rarefaction function generated value at index 6 to the integer: 7
expect_equal(rarefaction_values[6,1], 7)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.