我遇到了一些问题,包括几个需要传递几个名为'方法的函数的软件包。参数,一个用于原始函数调用,一个作为省略号的一部分' ...'论点。 具体来说,我试图通过普通的最大似然拟合有序的概率模型,但我想将边界应用于参数估计。我在MASS和“序数”中的相关功能遇到了同样的问题。包。我将在MASS中进行说明。
这是MASS中的功能:
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(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'优化的方法'争论(以及'降低'和#39;参数)。我会将它作为省略号参数传递给' polr',但当然,' polr'有自己的方法'争论,为了我的目的,我应该设置为“probit'”。 当然,通过'方法'两次在polr赢得了工作。我知道使用不完整的参数名称的技巧(ex' metho')但它对我不起作用。它不能作为“控件”传递。名单。在'序数'包,方法参数更深一层,但结果是相同的困境。什么会起作用?
以下是重现问题的示例代码:
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')
有什么建议吗?