Type: | Package |
Version: | 1.3.0 |
Date: | 2021-05-20 |
Title: | Simulation with Kernel Density Estimation |
Description: | Generates random values from a univariate and multivariate continuous distribution by using kernel density estimation based on a sample. Duong (2017) <doi:10.18637/jss.v021.i07>, Christian P. Robert and George Casella (2010 ISBN:978-1-4419-1575-7) <doi:10.1007/978-1-4419-1576-4>. |
Author: | MAKHGAL Ganbold [aut, cre], BAYARBAATAR Amgalan [aut] |
Maintainer: | MAKHGAL Ganbold <makhgal@seas.num.edu.mn> |
URL: | https://github.com/galaamn/simukde |
BugReports: | https://github.com/galaamn/simukde/issues |
Depends: | R (≥ 2.14.0) |
Imports: | ks, mvtnorm, parallel, stats, MASS, methods |
Suggests: | testthat, datasets |
License: | GPL (≥ 3) | file LICENSE |
Encoding: | UTF-8 |
ByteCompile: | true |
NeedsCompilation: | no |
RoxygenNote: | 7.1.1 |
Packaged: | 2021-05-20 10:25:45 UTC; galaa |
Repository: | CRAN |
Date/Publication: | 2021-05-20 11:00:02 UTC |
Find The Best Fitting Distribution
Description
It finds the best fitting distribution from supported univariate continuous distributions for given data.
Usage
find_best_fit(
x,
positive = FALSE,
plot = TRUE,
legend.pos = "topright",
dlc = NULL,
dlw = 1,
...
)
Arguments
x |
a numeric vector; data. |
positive |
a logical constant; distribution type. |
plot |
a logical constant. If |
legend.pos |
a character string. Indicates the legend position and must be one of "bottomright", "bottom", "bottomleft", "left", "topleft", "top", "topright" (default), "right" and "center". |
dlc |
a vector; probability density line colors for supported (up to 7) distributions. If unspecified, the rainbow color palette will be used. |
dlw |
a numerical constant; probability density line width. |
... |
Further arguments and parameters for the function |
Details
This function is supported following univariate distributions:
for positive random variables: Log normal, Exponential, Gamma and Weibull.
for all random variables: Normal, Cauchy, Log normal, Exponential, Gamma, Weibull and Uniform.
Legends of the plot are ordered by p-values of the test.
Value
A list containing the following items:
- distribution
the name of the best fitting distribution.
- ks.statistic
the Kolmogorov-Smirnov test statistic for the distribution.
- p.value
the p-value of the test.
- summary
results similar to above for other distributions.
- x
given data.
- n
the sample size.
References
William J. Conover (1971). Practical Nonparametric Statistics. New York: John Wiley & Sons. Pages 295–301.
Venables, W. N. and Ripley, B. D. (2002) Modern Applied Statistics with S. Fourth edition. Springer.
See Also
Examples
petal.length <- datasets::iris$Petal.Length[datasets::iris$Species == "setosa"]
simukde::find_best_fit(x = petal.length, positive = TRUE)
Simulation with Kernel Density Estimation
Description
The simukde package provides a function which generates random values from a univariate and multivariate continuous distribution by using kernel density estimation based on a sample. The function uses the Accept-Reject method.
Note
Funding: This package has been done within the framework of the project Statistics and Optimization Based Methods for Identification of Cancer-Activated Biological Processes (P2017-2519) supported by the Asia Research Center, Mongolia and Korea Foundation for Advanced Studies, Korea.
The funders had no role in study design, analysis, decision to publish, or preparation of the package.
Author(s)
MAKHGAL Ganbold and BAYARBAATAR Amgalan, National University of Mongolia
References
Duong (2017) <doi:10.18637/jss.v021.i07>, Christian P. Robert and George Casella (2010 ISBN:978-1-4419-1575-7) <doi:10.1007/978-1-4419-1576-4>.
Simulation with Kernel Density Estimation
Description
Generates random values from a univariate and multivariate continuous distribution by using kernel density estimation based on a sample. The function uses the Accept-Reject method.
Usage
simulate_kde(
x,
n = 100,
distr = "norm",
const.only = FALSE,
seed = NULL,
parallel = FALSE,
...
)
Arguments
x |
a numeric vector, matrix or data frame; data. |
n |
integer; the number of random values will be generated. |
distr |
character; instrumental or candidate distribution name. See details. |
const.only |
logical; if |
seed |
a single value, interpreted as an integer, or |
parallel |
logical; if |
... |
other parameters for functions |
Details
Such function uses the function kde
as kernel density estimator.
The Accept-Reject method is used to simulate random variables.
Following code named distributions can be used as a value of the argument distr
and an instrumental or candidate distribution of the simulation method.
For univariate distributions:
- norm
normal distribution (default),
(-\infty,+\infty)
- cauchy
Cauchy distribution,
(-\infty,+\infty)
- lnorm
log-normal distribution,
(0,+\infty)
- exp
exponential distribution,
(0,+\infty)
- gamma
gamma distribution,
(0,+\infty)
- weibull
Weibull distribution,
(0,+\infty)
- unif
uniform distribution,
(a,b)
And you can choose the best fitting instrumental distribution to simulate random variables more effectively by using find_best_fit
. See examples.
For multivariate distributions, "norm" (multivariate normal distribution) is used.
Value
list of given data, simulated values, kernel density estimation and the constant of the Accept-Reject method when const.only
is FALSE
(default).
References
Tarn Duong (2018). ks: Kernel Smoothing. R package version 1.11.2. https://CRAN.R-project.org/package=ks
Christian P. Robert and George Casella (2010) Introducing Monte Carlo Methods with R. Springer. Pages 51-57.
See Also
Examples
## 1-dimensional data
data(faithful)
hist(faithful$eruptions)
res <- simukde::simulate_kde(x = faithful$eruptions, n = 100, parallel = FALSE)
hist(res$random.values)
## Simulation with the best fitting instrumental distribution
data(faithful)
par(mfrow = c(1, 3))
hist(faithful$eruptions)
fit <- simukde::find_best_fit(x = faithful$eruptions, positive = TRUE)
res <- simukde::simulate_kde(
x = faithful$eruptions, n = 100,
distr = fit$distribution, parallel = FALSE
)
hist(res$random.values)
par(mfrow = c(1, 1))
## 2-dimensional data
data(faithful)
res <- simukde::simulate_kde(x = faithful, n = 100)
plot(res$kde, display = "filled.contour")
points(x = res$random.values, cex = 0.25, pch = 16, col = "green")
points(x = faithful, cex = 0.25, pch = 16, col = "black")