R:多重';方法';调用中的参数

R:多重';方法';调用中的参数,r,R,我对几个包有一个问题,这些包包含的函数需要传递几个命名的“method”参数,一个用于原始函数调用,另一个作为省略号“…”参数的一部分。 具体地说,我试图通过普通的最大似然来拟合有序概率模型,但我想对参数估计应用边界。我对质量和“有序”包中的相关函数也有同样的问题。我将大量地加以说明 这是质量函数: polr(formula, data, weights, start, ..., subset, na.action, contrasts = NULL, Hess = FALSE, mo

我对几个包有一个问题,这些包包含的函数需要传递几个命名的“method”参数,一个用于原始函数调用,另一个作为省略号“…”参数的一部分。 具体地说,我试图通过普通的最大似然来拟合有序概率模型,但我想对参数估计应用边界。我对质量和“有序”包中的相关函数也有同样的问题。我将大量地加以说明

这是质量函数:

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
调用。没有更改方法的选项。您基本上必须将代码复制到您自己的函数版本中才能更改该值。