R 具有相关预测因子的敏感性分析:具有相关结构的包pse LHS()不收敛

R 具有相关预测因子的敏感性分析:具有相关结构的包pse LHS()不收敛,r,function,statistics,arguments,R,Function,Statistics,Arguments,我注意到,包pse中的函数LHS()提供了参数opts=list(),它接受两个参数:COR和eps,前者是相关矩阵,后者是规定的相关矩阵和结果之间的偏差公差。两者都向下反馈到一个名为lhscorr() 我可以为高eps(例如0.5,1)成功运行该功能,但默认值为0.005。在eps(

我注意到,包pse中的函数
LHS()
提供了参数
opts=list()
,它接受两个参数:
COR
eps
,前者是相关矩阵,后者是规定的相关矩阵和结果之间的偏差公差。两者都向下反馈到一个名为
lhscorr()

我可以为高
eps
(例如0.5,1)成功运行该功能,但默认值为0.005。在
eps
(<0.1左右)的低值下,函数不收敛(请参阅底部的错误消息)

我想让它收敛到较低的值,看看
lhscorr.R
它确实需要
maxIt
参数(最大迭代次数)。它被设置为
maxIt=2*sqrt(dim(vars)[1])
,但是,与eps不同的是,它似乎无法馈入LHS()。根据
?LHS
,它也不接受
参数

1) 我是否遗漏了什么,或者真的没有办法将maxIt输入函数调用?2) 这就是我遇到的问题的原因吗?3) eps的“可接受”范围是什么

下面是我的真实数据帧的子集“subdf”(我已经在上面测试了我的代码):

下面是我的函数(目前评论仍然很差,因为它是一个需要更多选项的函数的修改版本):

这就是我所运行的:

datacorr <- cor(subdf, method = "spearman",use = "complete.obs")

factors <- c("Temperature", "Conductivity", "pH", "meanWindMS", "SalCalc", "TICumol", 
             "Pressure", "pco2atm")

distro <- c("qweibull", "qnorm", "qlogis", "qnorm", "qweibull", "qnorm", "qnorm", "qunif") 

props <- list( list(shape=4.02, scale=18.65), list(mean=1013, sd=499), 
               list(location=8.84,scale=0.31), list(mean=4.98, sd=0.83),
               list(shape=2.13, scale=0.68), list(mean=3821, sd=1068),
               list(mean=94.6, sd=0.17), list(min=356.9, max=402.2))


latincorr <- LHS(gasExchangeSens, factors = factors, N = 200, q = distro, q.arg = props, 
                 nboot = 200, opts = list(COR = datacorr, eps = 0.1))
包作者:)

这当然是我们的错误,用户应该能够显式地设置
maxIt
,这样就解决了您的问题。我会尽快发布一个新版本的修复程序。(更新:pse 0.4.5已提交给CRAN。应尽快联机)

然而,需要注意的是,在这种情况下可能会出现另一个问题。问题在于,不可能从具有固定参数和相关矩阵的多元分布生成样本。在某些情况下,所有相关矩阵都是允许的(例如,如果所有
q
分布都是
qnorm
,则可以自由指定相关项)。然而,更复杂的分布有时不允许自由指定相关项。对于您的数据,在
qweibull
qlogis
分布中就是这种情况。因此,无论设置了多大的
maxIt
,程序都可能无法收敛

我们在这里写了一小部分关于这个问题:


你可以在这里找到更好(但可能更密集)的数学背景:

没有足够的声誉来支持你的答案,但非常感谢软件包作者=)不客气!如果您遇到其他问题,请给我留言:)
In internal.LHScorcorr(vars, COR, l = l, eps = eps, it = it + 1,  :
  LHScorcorr: correlation does not converge after maximum iterations