Bootstrap based goodness-of-fit tests for (linear) models. Assume you have fitted a statistical model, e.g. classical linear model or generalized linear model or a model that follows (Y = m(^X) + ). This package allows to perform a rigorous statistical test to check if the chosen model family is correct.
First we generate a data-set in order to apply the package.
set.seed(1)
<- 100
N <- rnorm(N)
X1 <- rnorm(N)
X2 <- data.frame(
d y = rpois(n = N, lambda = exp(4 + X1 * 2 + X2 * 6)),
x1 = X1,
x2 = X2)
Note that both covariates influence the dependent variable (Y). Taking only one of the covariates into account obviously leads to a model family that is not correct and the GOF-test should reveal that:
<- glm(y ~ x1, data = d, family = poisson())
fit
library(bootGOF)
<- GOF_model(
mt model = fit,
data = d,
nmb_boot_samples = 100,
simulator_type = "parametric",
y_name = "y",
Rn1_statistic = Rn1_KS$new())
$get_pvalue()
mt#> [1] 0
On the other hand assuming the correct model family should in general not be rejected by the GOF-test:
<- glm(y ~ x1 + x2, data = d, family = poisson())
fit <- GOF_model(
mt model = fit,
data = d,
nmb_boot_samples = 100,
simulator_type = "parametric",
y_name = "y",
Rn1_statistic = Rn1_KS$new())
$get_pvalue()
mt#> [1] 0.61
…
You can install it from CRAN
install.packages("bootGOF")
or github
::install_github("MarselScheer/bootGOF") devtools
sessionInfo()
#> R version 4.0.0 (2020-04-24)
#> Platform: x86_64-pc-linux-gnu (64-bit)
#> Running under: Ubuntu 20.04 LTS
#>
#> Matrix products: default
#> BLAS/LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.8.so
#>
#> locale:
#> [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
#> [3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
#> [5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=C
#> [7] LC_PAPER=en_US.UTF-8 LC_NAME=C
#> [9] LC_ADDRESS=C LC_TELEPHONE=C
#> [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
#>
#> attached base packages:
#> [1] stats graphics grDevices datasets utils methods base
#>
#> other attached packages:
#> [1] bootGOF_0.1.0 badgecreatr_0.2.0
#>
#> loaded via a namespace (and not attached):
#> [1] digest_0.6.25 R6_2.4.1 backports_1.1.8 git2r_0.27.1
#> [5] magrittr_1.5 evaluate_0.14 rlang_0.4.10 stringi_1.4.6
#> [9] renv_0.10.0 checkmate_2.0.0 rmarkdown_2.3 tools_4.0.0
#> [13] stringr_1.4.0 xfun_0.15 yaml_2.2.1 compiler_4.0.0
#> [17] htmltools_0.5.0 knitr_1.29