The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
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[@]dogado.de.

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)

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.
Health stats visible at Monitor.