R:多重';方法';调用中的参数
我对几个包有一个问题,这些包包含的函数需要传递几个命名的“method”参数,一个用于原始函数调用,另一个作为省略号“…”参数的一部分。 具体地说,我试图通过普通的最大似然来拟合有序概率模型,但我想对参数估计应用边界。我对质量和“有序”包中的相关函数也有同样的问题。我将大量地加以说明 这是质量函数:R:多重';方法';调用中的参数,r,R,我对几个包有一个问题,这些包包含的函数需要传递几个命名的“method”参数,一个用于原始函数调用,另一个作为省略号“…”参数的一部分。 具体地说,我试图通过普通的最大似然来拟合有序概率模型,但我想对参数估计应用边界。我对质量和“有序”包中的相关函数也有同样的问题。我将大量地加以说明 这是质量函数: polr(formula, data, weights, start, ..., subset, na.action, contrasts = NULL, Hess = FALSE, mo
polr(formula, data, weights, start, ..., subset, na.action,
contrasts = NULL, Hess = FALSE, model = TRUE,
method = c("logistic", "probit", "loglog", "cloglog", "cauchit"))
polr调用'optim'函数,它允许通过在省略号处向optim传递参数来控制优化的各个方面。这是optim的函数声明:
optim(par, fn, gr = NULL, ...,
method = c("Nelder-Mead", "BFGS", "CG", "L-BFGS-B", "SANN",
"Brent"),
lower = -Inf, upper = Inf,
control = list(), hessian = FALSE)
为了获得有界优化,我需要将'L-BFGS-B'传递给optim的'method'参数(以及'lower'和'upper'参数)。我会将它作为省略号参数传递给'polr',但当然,'polr'有自己的'method'参数,出于我的目的,我应该将其设置为'probit'。
当然,在polr中两次通过“方法”是行不通的。我知道使用不完整参数名(例如'metho')的技巧,但它对我不起作用。无法将其作为“控件”列表传递。在“ordinal”包中,方法参数更深一层,但结果是相同的困境。那么,什么会起作用呢
下面是重现问题的示例代码:
require(MASS)
x <- c(rep(0,6),rep(1,6))
resp <- as.factor(rep(seq(1,6),2))
Freq <- c(7,11,2,0,0,0,2,0,1,3,1,3)
# no problem:
polr(resp ~ x, weights= Freq, method = 'probit')
# but this is what I need (but can't):
polr(resp ~ x, weights = Freq,
# ellipsis arguments to pass to optim:
method = 'L-BFGS-B', lower = rep(-5,6), upper = rep(5,6),
# necessary argument to polr:
method='probit')
require(质量)
x行optim(s0,fmin,gmin,method=“BFGS”,…)
硬编码为polr.fit
,由polr
调用。没有更改方法的选项。您基本上必须将代码复制到您自己的函数版本中才能更改该值。