OwenT(2, 0.5)
OwenT(2, 0.5, fun = "mOwenT") # modified arctangent series (default)
OwenT(2, 0.5, fun = "tOwenT") # tetrachoric series
OwenT(2, 0.5, fun = "vOwenT") # Vasicek's series
rho <- 0.6
a <- rho/sqrt(1 - rho^2)
OwenT(0.3, a)
OwenT(0.3, a, fun = "tOwenT")
OwenT(c(-1, 0.5, 4), a, fun = "vOwenT")
OwenT(2, c(-1, -0.5, 0, 0.5, 1), fun = "vOwenT")
function (h, a, opt = TRUE, fun = c("mOwenT", "tOwenT", "vOwenT"))
{
chkArgs1(h = h, a = a, opt = opt)
if (length(h) < length(a))
h <- rep(h, length(a))
if (length(a) < length(h))
a <- rep(a, length(h))
z <- h
n <- rep(0, length(z))
z[a == 0] <- 0
z[is.na(a)] <- NA
i <- a != 0 & !is.na(a)
if (any(i)) {
h <- h[i]
a <- a[i]
ph <- pnorm(h)
fun <- match.arg(fun)
if (fun == "mOwenT")
j <- abs(a) > 1
if (fun == "tOwenT")
j <- opt & abs(a) > 1
if (fun == "vOwenT")
j <- opt & abs(a) < 1
pah <- h
if (any(j))
pah[j] <- pnorm(a[j] * h[j])
pah[is.nan(pah)] <- 0
w <- eval(call(fun, h, a, ph, pah, opt))
z[i] <- w
n[i] <- attr(w, "nIter")
}
attr(z, "nIter") <- n
return(z)
}
Run the code above in your browser using DataLab