Nothing
# Tests for the rp.lm function
# setwd('rpanel')
# library(devtools)
# library(testthat)
# load_all()
#----------------------------------------------------------------
# Regression with one covariate
#----------------------------------------------------------------
test_that('Standard call', {
expect_no_error(pnl <- rp.lm(Giving ~ Employ, data = CofE))
rp.control.dispose(pnl)
})
test_that('Change axis labels', {
expect_no_error(pnl <- rp.lm(Giving ~ Employ, data = CofE, xlab = 'x', ylab = 'y'))
rp.control.dispose(pnl)
})
test_that('Model as input', {
model <- lm(pnl <- Giving ~ Employ, data = CofE)
expect_no_error(pnl <- rp.lm(model))
rp.control.dispose(pnl)
})
test_that('Error if no covariate is specified', {
expect_error(rp.lm(Giving ~ 1, data = CofE))
})
test_that('Rodent data: lm', {
expect_no_error(pnl <- rp.lm(log(Speed) ~ log(Mass), data = rodent))
rp.control.dispose(pnl)
})
test_that('Rodent data: regression', {
expect_no_error(pnl <- with(rodent, rp.regression(log(Mass), log(Speed))))
rp.control.dispose(pnl)
})
#----------------------------------------------------------------
# cat('\n** Regression with two covariates **\n')
#----------------------------------------------------------------
test_that('Standard call', {
expect_no_error(pnl <- rp.lm(Giving ~ Employ + Attend, data = CofE))
rp.control.dispose(pnl)
})
test_that('Change axis labels', {
expect_no_error(pnl <- rp.lm(Giving ~ Employ + Attend, data = CofE,
xlab = 'x', ylab = 'y', zlab = 'z'))
rp.control.dispose(pnl)
})
test_that('Interaction between two covariates', {
expect_warning(pnl <- rp.lm(Giving ~ Employ * Attend, data = CofE))
rp.control.dispose(pnl)
})
test_that('Static mode: change axis labels with a specified model', {
expect_no_error(rp.lm(Giving ~ Employ + Attend, data = CofE,
xlab = 'x', ylab = 'y', zlab = 'z',
display.model = ~ Employ, panel = FALSE))
})
test_that('Static mode: residuals showing', {
expect_no_error(rp.lm(Giving ~ Employ + Attend, data = CofE,
xlab = 'x', ylab = 'y', zlab = 'z',
residuals.showing = TRUE, panel = FALSE))
})
test_that('Static mode: select the model to be displayed', {
expect_no_error(rp.lm(Giving ~ Employ + Attend, data = CofE,
display.model = ~ Employ, panel = FALSE))
})
test_that('Static mode: select the null model to be displayed', {
expect_no_error(rp.lm(Giving ~ Employ + Attend, data = CofE,
display.model = ~ 1, residuals.showing = TRUE,
panel = FALSE))
})
cofe_2019 <- suppressMessages(rp.wrangle('cofe_2019'))
test_that('Static mode: transformations with a data argument', {
expect_no_error(rp.lm(log(Giving_per_member) ~ Attachment + IMD, data = cofe_2019,
panel = FALSE, residuals.showing = TRUE))
})
test_that('Old style', {
expect_no_error(pnl <- rp.lm(Giving ~ Employ + Attend, data = CofE,
display.model = ~ 1, residuals.showing = TRUE,
style = 'old'))
rp.control.dispose(pnl)
})
test_that('rp.regression', {
expect_no_error(pnl <- with(CofE, rp.regression(cbind(Employ, Attend), Giving)))
rp.control.dispose(pnl)
})
Gpm <- cofe_2019$Giving_per_member
Att <- cofe_2019$Attachment
Imd <- cofe_2019$IMD
test_that('Static mode: transformations without a data argument', {
expect_no_error(rp.lm(log(Giving_per_member) ~ Attachment + IMD, panel = FALSE,
residuals.showing = TRUE, data = cofe_2019))
expect_no_error(rp.lm(Giving_per_member ~ log(Attachment) + IMD, panel = FALSE,
residuals.showing = TRUE, data = cofe_2019))
})
test_that('Model nodes when the names are long:', {
expect_no_error(rp.lm(log(Giving_per_member) ~ Attachment + IMD, panel = FALSE,
data = cofe_2019, plot.nodes = TRUE))
})
# Remove rgl windows
rgl::close3d(rgl::rgl.dev.list())
#----------------------------------------------------------------
# cat('\n** One covariate and one factor **\n')
#----------------------------------------------------------------
test_that('Standard call', {
expect_no_error(pnl <- rp.lm(weight ~ hab + month, data = gullweight))
rp.control.dispose(pnl)
})
test_that('Default display', {
# When panel is TRUE, the default display.model is NULL.
# When panel is FALSE, the default display.model is the specified model.
expect_no_error(rp.lm(weight ~ hab + month, data = gullweight, panel = FALSE))
expect_no_error(rp.lm(weight ~ hab * month, data = gullweight, panel = FALSE))
})
test_that('Old style of display', {
expect_no_error(pnl <- rp.lm(weight ~ hab + month, data = gullweight, style = 'old'))
rp.control.dispose(pnl)
# Check that the factor is correctly identified
expect_no_error(pnl <- rp.lm(weight ~ month + hab, data = gullweight, style = 'old'))
rp.control.dispose(pnl)
})
rds <- read.table('https://www.maths.gla.ac.uk/~adrian/data/rds.txt', header = TRUE,
stringsAsFactors = TRUE)
test_that('rds data', {
# Adjust linewidth', {
expect_no_error(rp.lm(lrate ~ RDS * GA, data = rds, panel = FALSE, linewidth = 2))
# Increase font size
expect_no_error(rp.lm(lrate ~ RDS * GA, data = rds, panel = FALSE, plot = FALSE) +
ggplot2::theme(plot.title = ggplot2::element_text(size = 20)) +
ggplot2::theme(axis.text = ggplot2::element_text(size = 20)) +
ggplot2::theme(axis.title = ggplot2::element_text(size = 20)))
})
test_that('Error: character variable', {
rds$RDS <- as.character(rds$RDS)
expect_error(rp.lm(lrate ~ RDS * GA, data = rds, panel = FALSE))
rds$RDS <- factor(rds$RDS)
})
#----------------------------------------------------------------
# cat('\n** One factor **\n')
#----------------------------------------------------------------
test_that('Standard call', {
expect_no_error(pnl <- rp.lm(stime ~ poison, data = poisons))
rp.control.dispose(pnl)
})
test_that('Static mode: standard call', {
expect_no_error(rp.lm(stime ~ poison, data = poisons, panel = FALSE))
})
test_that('Static mode: specify display model', {
expect_no_error(rp.lm(stime ~ poison, data = poisons, panel = FALSE,
display.model = ~ poison))
})
test_that('Static mode: specify display and comparison models', {
expect_no_error(rp.lm(stime ~ poison, data = poisons, panel = FALSE,
display.model = ~ poison, comparison.model = ~ 1))
})
test_that('Static mode: shading display', {
expect_no_error(rp.lm(stime ~ poison, data = poisons, panel = FALSE,
comparison.model = ~ 1, uncertainty.display = 'shading'))
})
test_that('Static mode: no display model', {
expect_no_error(rp.lm(stime ~ poison, data = poisons, panel = FALSE,
display.model = NULL))
})
test_that('Static mode: valid display.model', {
expect_no_error(rp.lm(stime ~ poison, data = poisons, panel = FALSE,
display.model = ~ 1))
})
test_that('Static mode: invalid display.model', {
expect_error(rp.lm(stime ~ poison + treatment, data = poisons, panel = FALSE,
display.model = ~ something))
})
test_that('Static mode: missing data present', {
poisons1 <- poisons
poisons1[cbind(sample(1:nrow(poisons1), 8), sample(1:3, 8, replace = TRUE))] <- NA
expect_no_error(rp.lm(stime ~ poison, data = poisons1, panel = FALSE))
expect_no_error(rp.lm(stime ~ poison, data = poisons1, panel = FALSE,
comparison.model = ~ 1))
})
test_that('Static mode: some categories with no data', {
poisons1 <- poisons
ind <- which((poisons1$poison == '1'))
poisons1 <- poisons1[-ind, ]
expect_no_error(rp.lm(stime ~ poison, data = poisons1, panel = FALSE,
comparison.model = ~ 1))
})
test_that('Static mode: some categories are all missing', {
poisons1 <- poisons
ind <- which((poisons1$poison == '1'))
poisons1$poison[ind] <- NA
expect_no_error(rp.lm(stime ~ poison, data = poisons1, panel = FALSE,
comparison.model = ~ 1))
})
# Doughnut data from Snedecor & Cochran p.258
absorption <- c(64, 72, 68, 77, 56, 95, 78, 91, 97, 82, 85, 77,
75, 93, 78, 71, 63, 76, 55, 66, 49, 64, 70, 68)
fat <- factor(rep(c('A', 'B', 'C', 'D'), each = 6))
test_that('Standard call:', {
expect_no_error(rp.lm(absorption ~ fat, panel = FALSE, comparison.model = ~ 1))
})
test_that('Old version of rp.anova', {
expect_no_error(pnl <- rp.anova(1/poisons$stime, poisons$treatment))
rp.control.dispose(pnl)
})
#----------------------------------------------------------------
# cat('\n** Two factors **\n')
#----------------------------------------------------------------
test_that('Standard call', {
expect_no_error(pnl <- rp.lm(stime ~ poison + treatment, data = poisons))
rp.control.dispose(pnl)
})
test_that('Specify a comparison model', {
expect_no_error(pnl <- rp.lm(stime ~ poison + treatment, data = poisons,
comparison.model = ~ poison))
rp.control.dispose(pnl)
})
test_that('Shading display', {
expect_no_error(pnl <- rp.lm(stime ~ poison + treatment, data = poisons,
uncertainty.display = 'shading'))
rp.control.dispose(pnl)
})
test_that('Error: display and comparison models are not adjacent', {
expect_error(rp.lm(stime ~ poison + treatment, data = poisons,
display.model = ~ poison * treatment,
comparison.model = ~ poison, panel = FALSE))
})
test_that('Static mode: standard call', {
expect_no_error(rp.lm(stime ~ poison + treatment, data = poisons, panel = FALSE))
})
test_that('Static mode: transformation', {
expect_no_error(rp.lm(1/stime ~ poison + treatment, data = poisons, panel = FALSE))
})
test_that('Static mode: shading display', {
expect_no_error(rp.lm(stime ~ poison + treatment, data = poisons, panel = FALSE,
uncertainty.display = 'shading'))
})
test_that('Static mode: no display model', {
expect_no_error(rp.lm(stime ~ poison + treatment, data = poisons, panel = FALSE,
display.model = NULL))
})
test_that('Static mode: valid display.model', {
expect_no_error(rp.lm(stime ~ poison + treatment, data = poisons, panel = FALSE,
display.model = ~ poison * treatment))
})
test_that('Static mode: invalid display.model', {
expect_error(rp.lm(stime ~ poison + treatment, data = poisons, panel = FALSE,
display.model = ~ something))
})
test_that('Static mode: valid comparison.model', {
expect_no_error(rp.lm(stime ~ poison + treatment, data = poisons, panel = FALSE,
display.model = ~ poison * treatment,
comparison.model = ~ poison + treatment))
expect_no_error(rp.lm(1/stime ~ poison + treatment, data = poisons, panel = FALSE,
display.model = ~ poison * treatment,
comparison.model = ~ poison + treatment))
})
test_that('Static mode: display.model and comparison.model are not adjacent', {
expect_error(rp.lm(stime ~ poison + treatment, data = poisons, panel = FALSE,
display = ~ poison, comparison.model = ~ poison * treatment))
})
test_that('Static mode: missing data present', {
poisons1 <- poisons
poisons1[cbind(sample(1:nrow(poisons1), 8), sample(1:3, 8, replace = TRUE))] <- NA
expect_no_error(rp.lm(stime ~ poison + treatment, data = poisons1, panel = FALSE))
expect_no_error(rp.lm(stime ~ poison + treatment, data = poisons1, panel = FALSE,
comparison.model = ~ poison * treatment))
})
test_that('Static mode: some categories with no data', {
ind <- which((poisons$poison == '1') & (poisons$treatment == '3'))
poisons1 <- poisons[-ind, ]
expect_no_error(rp.lm(stime ~ poison * treatment, data = poisons1, panel = FALSE,
comparison.model = ~ poison * treatment))
})
test_that('Very different sample sizes in factor levels', {
y <- c(rnorm(10), rnorm(1000), rnorm(10), rnorm(10))
x <- factor(c(rep(1, 1010), rep(2, 20)))
z <- factor(c(rep(1, 10), rep(2, 1000), rep(1, 10), rep(2, 10)))
expect_no_error(rp.lm(y ~ x + z, panel = FALSE, display.model = ~ x * z, comparison.model = ~ x + z))
expect_no_error(rp.lm(y ~ x + z, panel = FALSE, display.model = ~ x * z, comparison.model = ~ x + z,
uncertainty.display = 'shading'))
expect_no_error(rp.lm(y ~ x, comparison.model = ~1, panel = FALSE))
expect_no_error(rp.lm(y ~ x, comparison.model = ~1, panel = FALSE, uncertainty.display = 'shading'))
})
test_that('One observation per cell, so no interaction can be fitted', {
y <- rnorm(4)
x <- factor(rep(1:2, 2))
z <- factor(rep(1:2, each = 2))
expect_no_error(rp.lm(y ~ x + z, panel = FALSE, display.model = ~ x + z, comparison.model = ~ x * z))
})
test_that('Old version of rp.anova', {
expect_no_error(pnl <- rp.anova(1/poisons$stime, poisons$treatment, poisons$poison))
rp.control.dispose(pnl)
})
#----------------------------------------------------------------
# Different contrasts
#----------------------------------------------------------------
test_that('Different contrasts', {
model <- lm(stime ~ poison + treatment,
contrasts = list(poison = 'contr.poly', treatment = 'contr.poly'), data = poisons)
expect_no_error(rp.lm(model, data = poisons, panel = FALSE))
model <- lm(stime ~ poison,
contrasts = list(poison = 'contr.poly'), data = poisons)
expect_no_error(rp.lm(model, data = poisons, panel = FALSE))
model <- lm(weight ~ hab + month, data = gullweight, contrasts = list(month = 'contr.poly'))
expect_no_error(rp.lm(model, data = gullweight, panel = FALSE))
})
#----------------------------------------------------------------
# Plot model nodes
#----------------------------------------------------------------
# load('https://www.maths.gla.ac.uk/~adrian/data/DO_Clyde.rda')
# clyde.sub <- subset(clyde, Station == 4)
#
# test_that('Static mode: plot nodes - one highlight', {
# expect_no_error(rp.lm(DO ~ Temperature + Salinity, data = clyde.sub,
# panel = FALSE, plot.nodes = TRUE))
# })
# test_that('Static mode: plot nodes - comparison', {
# expect_no_error(rp.lm(DO ~ Temperature + Salinity, data = clyde.sub,
# comparison.model = ~ Temperature,
# panel = FALSE, plot.nodes = TRUE))
# })
# test_that('Static mode: plot nodes - comparison', {
# expect_no_error(rp.lm(stime ~ poison + treatment, data = poisons,
# comparison.model = ~ poison * treatment,
# panel = FALSE, plot.nodes = TRUE))
# })
test_that('Static mode: plot nodes - one highlight', {
expect_no_error(rp.lm(stime ~ poison + treatment, data = poisons,
panel = FALSE, plot.nodes = TRUE))
})
test_that('Static mode: plot nodes - comparison', {
expect_no_error(rp.lm(stime ~ poison + treatment, data = poisons,
comparison.model = ~ poison,
panel = FALSE, plot.nodes = TRUE))
})
test_that('Static mode: plot nodes - comparison', {
expect_no_error(rp.lm(stime ~ poison + treatment, data = poisons,
comparison.model = ~ poison * treatment,
panel = FALSE, plot.nodes = TRUE))
})
#----------------------------------------------------------------
# cat('\n** Save and amend the ggplot object **\n')
#----------------------------------------------------------------
test_that('Static mode: plot if no assignment', {
expect_no_error(rp.lm(stime ~ poison + treatment, data = poisons,
comparison.model = ~ poison * treatment,
panel = FALSE))
# A break in the sequence of plots for ease of review
plot(4)
})
test_that('Static mode: no plot if there is an assignment', {
expect_no_error(plt <- rp.lm(stime ~ poison + treatment, data = poisons,
comparison.model = ~ poison * treatment,
panel = FALSE))
plot(5)
print(plt)
print(plt + ggplot2::ggtitle("Something"))
})
# Remove rgl windows
rgl::close3d(rgl::rgl.dev.list())
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.