Version: | 0.9.2 |
Date: | 2020-11-03 |
Title: | Utility Functions for Davidian Curves |
Author: | Oğuzhan Öğreden |
Maintainer: | Oğuzhan Öğreden <oguzhan@oguzhanogreden.com> |
Description: | A Davidian curve defines a seminonparametric density, whose shape and flexibility can be tuned by easy to estimate parameters. Since a special case of a Davidian curve is the standard normal density, Davidian curves can be used for relaxing normality assumption in statistical applications (Zhang & Davidian, 2001) <doi:10.1111/j.0006-341X.2001.00795.x>. This package provides the density function, the gradient of the loglikelihood and a random generator for Davidian curves. |
License: | GPL-3 |
URL: | https://github.com/oguzhanogreden/dcurver |
BugReports: | https://github.com/oguzhanogreden/dcurver/issues |
Imports: | Rcpp (≥ 0.12.14) |
LinkingTo: | Rcpp, RcppArmadillo |
RoxygenNote: | 7.1.1 |
Encoding: | UTF-8 |
Suggests: | testthat |
NeedsCompilation: | yes |
Packaged: | 2020-11-03 19:19:27 UTC; oguzhanogreden |
Repository: | CRAN |
Date/Publication: | 2020-11-04 06:50:08 UTC |
Gradient of the log-likelihood of univariate Davidian curves
Description
Provides the gradient for use in estimation.
Usage
dc_grad(x, phi)
Arguments
x |
A vector of observations. |
phi |
phi Davidian curve parameters. A maximum of 10 parameters is allowed. |
Details
Woods & Lin (2009) provide the gradient (Equations 17 and 18). Note that the gradient is not defined for phi = 0.0.
References
Woods, C. M., & Lin, N. (2009). Item response theory with estimation of the latent density using Davidian curves. Applied Psychological Measurement, 33(2), 102-117. doi: 10.1177/0146621608319512
Examples
# The loglikelihood of a univariate Davidian curve is given by,
dc_LL <- function(phi, dat) {
sum(log(ddc(dat, phi)))
}
# dc_grad can be used for obtaining the gradient of this loglikelihood as follows:
dc_LL_GR <- function(phi, dat) {
colSums(dc_grad(dat, phi))
}
# This can be verified by numerical approximation.
# For instance, using numDeriv package:
## Not run:
phi <- c(-5, 2.5, 10)
d <- runif(10, -5, 5)
dc_LL_GR(phi, d)
numDeriv::grad(dc_LL, x = phi, dat = d)
phi <- c(-5, 0, 10)
dc_LL_GR(phi, d)
## End(Not run)
Density function for univariate Davidian curves
Description
Returns the density for a vector of x.
Usage
ddc(x, phi)
Arguments
x |
vector of quantiles. |
phi |
Davidian curve parameters. A maximum of 10 parameters is allowed. |
Examples
curve(ddc(x, 1.570789), -6, 6) # Approximately normal.
phi <- c(77.32, 78.51, 76.33, 77.16)
curve(ddc(x, phi), -6, 6) # A bimodal density.
integrate(ddc, phi = phi, lower = -Inf, upper = Inf) # Integrates to 1.
Random samples from univariate Davidian curves
Description
Returns n samples from a univariate Davidian curve.
Usage
rdc(n, phi)
Arguments
n |
Number of observations to be sampled. |
phi |
Davidian curve parameters. A maximum of 10 parameters is allowed. |
Examples
# Sample from the standard normal Davidian curve:
hist(rdc(1000, 1.570789), xlim = c(-6, 6), ylim = c(0, 0.5), freq = FALSE, breaks = 20)
curve(dnorm(x), -6, 6, col = "blue", lwd = 1, add = TRUE)
curve(ddc(x, 1.570789), -6, 6, col = "red", lwd = 2, lty = 3, add = TRUE)
# Sample from a bimodal density:
phi <- c(77.32, 78.51, 76.33, 77.16)
hist(rdc(1000, phi), xlim = c(-6, 6), ylim = c(0, 0.4), freq = FALSE, breaks = "fd")
curve(ddc(x, phi), -6, 6, col = "red", lwd = 2, lty = 3, add = TRUE)