library(ssdtools)
library(ggplot2)The user can also specify a custom distribution (called say dist) provided the following functions are defined:
ddist(x, par1, par2, log = FALSE))pdist(q, par1, par2, lower.tail = TRUE, log.p = FALSE))qdist(p, par1, par2, lower.tail = TRUE, log.p = FALSE))rdist(n, par1, par2))sdist(x))An elegant approach using some tidyverse packages is demonstrated below.
library(purrr)
library(tidyr)
library(dplyr)
boron_preds <- nest(ssdtools::boron_data, data = c(Chemical, Species, Conc, Units)) %>%
mutate(
Fit = map(data, ssd_fit_dists, dists = "lnorm"),
Prediction = map(Fit, predict)
) %>%
unnest(Prediction)
#> $start.arg
#> $start.arg$meanlog
#> [1] 1.830858
#>
#> $start.arg$sdlog
#> [1] 0.9481578
#>
#>
#> $fix.arg
#> NULL
#>
#> $start.arg
#> $start.arg$meanlog
#> [1] 2.564852
#>
#> $start.arg$sdlog
#> [1] 0.4602612
#>
#>
#> $fix.arg
#> NULL
#>
#> $start.arg
#> $start.arg$meanlog
#> [1] 3.931086
#>
#> $start.arg$sdlog
#> [1] 0.4821499
#>
#>
#> $fix.arg
#> NULL
#>
#> $start.arg
#> $start.arg$meanlog
#> [1] 2.176528
#>
#> $start.arg$sdlog
#> [1] 1.509361
#>
#>
#> $fix.arg
#> NULLThe resultant data and predictions can then be plotted as follows.
ssd_plot(boron_data, boron_preds, xlab = "Concentration (mg/L)", ci = FALSE) +
facet_wrap(~Group)The data can be visualized using a Cullen Frey plot of the skewness and kurtosis.
set.seed(10)
ssd_plot_cf(boron_data)A fitdists object can be plotted to display model diagnostics plots for each fit.
plot(boron_dists)