The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.
LRTesteR provides 42 hypothesis tests and confidence intervals based on the likelihood ratio statistic. Of these, 36 are parametric tests about a specific distribution and 6 are nonparametric tests based on the empirical likelihood. Every test comes in two forms: a one sample version and an ANOVA style version.
To test lambda, simply call poisson_lambda_test.
library(LRTesteR)
set.seed(1)
x <- rpois(n = 100, lambda = 1)
poisson_lambda_test(x = x, lambda = 1, alternative = "two.sided")
#> Log Likelihood Statistic: 0.01
#> p value: 0.92
#> Confidence Level: 95%
#> Confidence Interval: (0.826, 1.22)To get a confidence interval, set conf.level to the desired confidence. The example below gets a two sided 90% confidence interval for the scale of a Cauchy random variable.
set.seed(1)
x <- rcauchy(n = 100, location = 3, scale = 5)
cauchy_scale_test(x = x, scale = 5, alternative = "two.sided", conf.level = .90)
#> Log Likelihood Statistic: 1.21
#> p value: 0.271
#> Confidence Level: 90%
#> Confidence Interval: (4.64, 7.284)Setting alternative to “less” gets a one sided interval bounded above.
cauchy_scale_test(x = x, scale = 5, alternative = "less", conf.level = .90)
#> Log Likelihood Statistic: 1.1
#> p value: 0.865
#> Confidence Level: 90%
#> Confidence Interval: (0, 6.93)Setting it to “greater” gets a one sided interval bounded below.
cauchy_scale_test(x = x, scale = 5, alternative = "greater", conf.level = .90)
#> Log Likelihood Statistic: 1.1
#> p value: 0.135
#> Confidence Level: 90%
#> Confidence Interval: (4.878, Inf)One-way ANOVA is generalized to all distributions. Here gamma random variables are created with different shapes. The test returns a small p value and a set of confidence intervals that have 95% confidence as a group.
set.seed(1)
x <- c(rgamma(n = 50, shape = 1, rate = 2), rgamma(n = 50, shape = 2, rate = 2), rgamma(n = 50, shape = 3, rate = 2))
fctr <- c(rep(1, 50), rep(2, 50), rep(3, 50))
fctr <- factor(fctr, levels = c("1", "2", "3"))
gamma_shape_one_way_test(x = x, fctr = fctr, conf.level = .95)
#> Log Likelihood Statistic: 17.27
#> p value: 0
#> Confidence Level Of Set: 95%
#> Individual Confidence Level: 98.3%
#> Confidence Interval For Group 1: (0.65, 1.515)
#> Confidence Interval For Group 2: (1.376, 3.376)
#> Confidence Interval For Group 3: (1.691, 4.192)The empirical likelihood tests do not require any distributional assumptions and work with less data.
set.seed(1)
x <- rnorm(n = 25, mean = 1, sd = 1)
empirical_mu_test(x = x, mu = 1, alternative = "two.sided")
#> Log Likelihood Statistic: 0.73
#> p value: 0.392
#> Confidence Level: 95%
#> Confidence Interval: (0.752, 1.501)See the Nonparametric Tests vignette for more detail on the empirical likelihood.
As implemented, all functions depend on the asymptotic χ2 approximation. To get a sense of how accurate this approximation is for large samples, the likelihood tests are compared to the exact tests below.
First, X is normally distributed with μ equal to 3 and standard deviation equal to 2. The two intervals for μ are similar.
set.seed(1)
x <- rnorm(n = 500, mean = 3, sd = 2)
exactTest <- t.test(x = x, mu = 2.5, alternative = "two.sided", conf.level = .95)
likelihoodTest <- gaussian_mu_test(x = x, mu = 2.5, alternative = "two.sided", conf.level = .95)
as.numeric(exactTest$conf.int)
#> [1] 2.867461 3.223115
likelihoodTest$conf.int
#> [1] 2.867729 3.222847The confidence intervals for variance are similar as well.
set.seed(1)
x <- rnorm(n = 500, mean = 3, sd = 2)
sigma2 <- 1.5^2 # Variance, not standard deviation.
exactTest <- EnvStats::varTest(x = x, sigma.squared = sigma2, alternative = "two.sided", conf.level = .95)
likelihoodTest <- gaussian_variance_test(x = x, sigma.squared = sigma2, alternative = "two.sided", conf.level = .95)
as.numeric(exactTest$conf.int)
#> [1] 3.631734 4.655834
likelihoodTest$conf.int
#> [1] 3.620303 4.639384Switching to p of a binomial random variable, the confidence intervals are similar yet again.
exactTest <- stats::binom.test(x = 250, n = 500, p = .50, alternative = "two.sided", conf.level = .95)
likelihoodTest <- binomial_prob_test(x = 250, size = 500, prob = .50, alternative = "two.sided", conf.level = .95)
as.numeric(exactTest$conf.int)
#> [1] 0.4552856 0.5447144
likelihoodTest$conf.int
#> [1] 0.4562579 0.5437421When sample size is small, the similarity decreases. When exact methods are available, they are the better option. The utility of the likelihood based approach is its generality: this package provides hypothesis tests and confidence intervals for distributions that otherwise would not have them.
Estimated asymptotic type I and type II error rates can be found here.
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.