R 具有相关预测因子的敏感性分析:具有相关结构的包pse LHS()不收敛
我注意到,包pse中的函数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(
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