R:未发现因safeUroot功能导致的copula问题。
我试图用一个我以前使用过很多次的脚本来拟合一个copula,但突然因为函数safeUroot而出错。它表示找不到该函数,即使它似乎已定义。谁能帮我解释一下我为什么会犯这个错误,以及我如何克服这个错误。这只出现在拟合Frank copula时——其他copula似乎也能起作用R:未发现因safeUroot功能导致的copula问题。,r,R,我试图用一个我以前使用过很多次的脚本来拟合一个copula,但突然因为函数safeUroot而出错。它表示找不到该函数,即使它似乎已定义。谁能帮我解释一下我为什么会犯这个错误,以及我如何克服这个错误。这只出现在拟合Frank copula时——其他copula似乎也能起作用 > FrankFit = fitCopula(archmCopula("frank"), pseudo) Error in FUN(X[[i]], ...) : could not find function "saf
> FrankFit = fitCopula(archmCopula("frank"), pseudo)
Error in FUN(X[[i]], ...) : could not find function "safeUroot"
> safeUroot
function (f, interval, ..., lower = min(interval), upper = max(interval),
f.lower = f(lower, ...), f.upper = f(upper, ...), Sig = NULL,
check.conv = FALSE, tol = .Machine$double.eps^0.25, maxiter = 1000,
trace = 0)
{
if (is.null(Sig) && f.lower * f.upper > 0 || is.numeric(Sig) &&
(Sig * f.lower > 0 || Sig * f.upper < 0)) {
if (trace)
cat(sprintf("search in [%g,%g]%s", lower, upper,
if (trace >= 2)
"\n"
else " ... "))
Delta <- function(u) 0.01 * pmax(1e-07, abs(u))
if (is.null(Sig)) {
delta <- Delta(c(lower, upper))
while (isTRUE(f.lower * f.upper > 0) && any(iF <- is.finite(c(lower,
upper)))) {
if (iF[1])
f.lower <- f(lower <- lower - delta[1])
if (iF[2])
f.upper <- f(upper <- upper + delta[2])
if (trace >= 2)
cat(sprintf(" .. modified lower,upper: (%15g,%15g)\n",
lower, upper))
delta <- 2 * delta
}
}
else {
delta <- Delta(lower)
while (isTRUE(Sig * f.lower > 0)) {
f.lower <- f(lower <- lower - delta)
if (trace)
cat(sprintf(" .. modified lower: %g\n", lower))
delta <- 2 * delta
}
delta <- Delta(upper)
while (isTRUE(Sig * f.upper < 0)) {
f.upper <- f(upper <- upper + delta)
if (trace)
cat(sprintf(" .. modified upper: %g\n", upper))
delta <- 2 * delta
}
}
if (trace && trace < 2)
cat(sprintf("extended to [%g, %g]\n", lower, upper))
}
if (!isTRUE(f.lower * f.upper <= 0))
stop("did not succeed extending the interval endpoints for f(lower) * f(upper) <= 0")
if (check.conv) {
r <- tryCatch(uniroot(f, ..., lower = lower, upper = upper,
f.lower = f.lower, f.upper = f.upper, tol = tol,
maxiter = maxiter), warning = function(w) w)
if (inherits(r, "warning"))
stop("convergence problem in zero finding: ", r$message)
else r
}
else uniroot(f, ..., lower = lower, upper = upper, f.lower = f.lower,
f.upper = f.upper, tol = tol, maxiter = maxiter)
}
<bytecode: 0x000000004464ff18>
<environment: namespace:copula>
>
FrankFit=fitCopula(archmCopula(“frank”),伪)
FUN(X[[i]],…)中出错:找不到函数“safeUroot”
>萨弗鲁奥
函数(f,间隔,…,下限=最小(间隔),上限=最大(间隔),
f、 下=f(下,…),f.upper=f(上,…),Sig=NULL,
check.conv=FALSE,tol=0.Machine$double.eps^0.25,maxiter=1000,
跟踪=0)
{
如果(is.null(Sig)&&f.lower*f.upper>0 | | is.numeric(Sig)&&
(Sig*f.lower>0 | | Sig*f.lower<0)){
如果(跟踪)
cat(sprintf(“搜索[%g,%g]%s”),下部、上部、,
如果(跟踪>=2)
“\n”
否则“…”)
Delta您最近升级了R吗?如果是,您是否运行了
update.packages(checkbuild=TRUE)
?否,我最近没有升级R。此外,我能够适应其他连接函数(我假设使用相同的函数)。