R-glmer不同机器上的不同结果(非确定性)

R-glmer不同机器上的不同结果(非确定性),r,lme4,non-deterministic,R,Lme4,Non Deterministic,是否有任何原因说明lme4的glmer功能会在不同的机器上产生不同的结果?这些机器中的硬件有着本质上的不同,尽管它们都运行着相同的OS、R和软件包版本(事实证明并非如此) 这个公式有一个分组的二项式响应变量和22个连续的固定效应,它们都在同一个尺度上,还有几个随机效应,它们是字符串,我使用的是logitlink函数 cbind(ill, not_ill) ~ 0 + fix1 + fix2 + ... + fix22 + (1|id/region/country) + (1|season) 当

是否有任何原因说明
lme4
glmer
功能会在不同的机器上产生不同的结果?这些机器中的硬件有着本质上的不同,尽管它们都运行着相同的OS、R和软件包版本(事实证明并非如此)

这个公式有一个分组的二项式响应变量和22个连续的固定效应,它们都在同一个尺度上,还有几个随机效应,它们是字符串,我使用的是
logit
link函数

cbind(ill, not_ill) ~ 0 + fix1 + fix2 + ... + fix22 + (1|id/region/country) +
(1|season)
当使用列和测试数据集进行遗漏交叉验证时,我得到了非常类似的结果。然而,在一台机器上,我得到了一贯干净的输出,没有任何警告;另一方面,我在测试的每一个方面都得到了收敛警告

N.B.各机器的列车/测试集相同

编辑:添加
sessionInfo()

机器1(这是一个能产生好结果的机器

R version 3.3.1 (2016-06-21)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 16.04.1 LTS

locale:
 [1] LC_CTYPE=en_GB.UTF-8       LC_NUMERIC=C
 [3] LC_TIME=en_GB.UTF-8        LC_COLLATE=en_GB.UTF-8
 [5] LC_MONETARY=en_GB.UTF-8    LC_MESSAGES=en_GB.UTF-8
 [7] LC_PAPER=en_GB.UTF-8       LC_NAME=C
 [9] LC_ADDRESS=C               LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_GB.UTF-8 LC_IDENTIFICATION=C

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base

other attached packages:
[1] blmeco_1.1     arm_1.9-1      MASS_7.3-45    lme4_1.1-12    Matrix_1.2-7.1

loaded via a namespace (and not attached):
 [1] minqa_1.2.4     coda_0.18-1     abind_1.4-5     Rcpp_0.12.7
 [5] MuMIn_1.15.6    splines_3.3.1   nlme_3.1-128    grid_3.3.1
 [9] nloptr_1.0.4    stats4_3.3.1    lattice_0.20-34
R version 3.2.3 (2015-12-10)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 16.04.1 LTS

locale:
 [1] LC_CTYPE=en_GB.UTF-8       LC_NUMERIC=C
 [3] LC_TIME=en_GB.UTF-8        LC_COLLATE=en_GB.UTF-8
 [5] LC_MONETARY=en_GB.UTF-8    LC_MESSAGES=en_GB.UTF-8
 [7] LC_PAPER=en_GB.UTF-8       LC_NAME=C
 [9] LC_ADDRESS=C               LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_GB.UTF-8 LC_IDENTIFICATION=C

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base

other attached packages:
[1] blmeco_1.1   arm_1.9-1    MASS_7.3-45  lme4_1.1-12  Matrix_1.2-3

loaded via a namespace (and not attached):
 [1] minqa_1.2.4     coda_0.18-1     abind_1.4-5     Rcpp_0.12.7
 [5] MuMIn_1.15.6    splines_3.2.3   nlme_3.1-124    grid_3.2.3
 [9] nloptr_1.0.4    stats4_3.2.3    lattice_0.20-33
机器2(结果不太好)


显然,这里有一些差异我没有注意到,所以我会纠正一下,看看输出是否有任何变化。在存在的差异中,
矩阵
是最有可能引起问题的一个,因为(我认为)它是
lme4
的依赖项。感谢您的评论,让我来到这里。

我不确定您的意思这里的“非确定性”;我通常认为这意味着相同代码的连续运行,在同一台机器上,可能会产生不同的结果


对于大型、不稳定的问题,在相同的操作系统下,在不同的硬件平台上得到不同的结果,会有点奇怪,但不是不可能的。我们当然看到了相同版本的包(相同的R和C++代码)的情况。在不同的操作系统下使用不同的编译器编译时,会给出不同的结果。如果这些差异出现在公差测试的任何一方,那么在一种情况下,您将收到警告,而在另一种情况下,您将不会收到警告。我更关心的是估计值在不同平台上的差异有多大,而不是您是否收到警告。


它肯定会缩小范围,以确保您所做的一切尽可能相似(例如,您仍然在使用不同版本的R,并且,正如您所指出的,在不同的机器上使用不同版本的
Matrix
)。

我不确定您所说的“非确定性”是什么意思“这里;我通常认为这意味着在同一台机器上连续运行相同的代码,,可能会得到不同的结果


对于大型、不稳定的问题,在相同的操作系统下,在不同的硬件平台上得到不同的结果,会有点奇怪,但不是不可能的。我们当然看到了相同版本的包(相同的R和C++代码)的情况。在不同的操作系统下使用不同的编译器编译时,会给出不同的结果。如果这些差异出现在公差测试的任何一方,那么在一种情况下,您将收到警告,而在另一种情况下,您将不会收到警告。我更关心的是估计值在不同平台上的差异有多大,而不是您是否收到警告。


它肯定会缩小范围,以确保您所做的一切尽可能相似(例如,您仍然在使用不同版本的R,并且正如您所指出的,在不同的机器上使用不同版本的
矩阵

请提供一个可复制的示例,说明您在两台计算机上设置了相同的种子值,对吗?由于保密原因,这是我能提供的最多信息。我不是在寻找问题的解决方案,我只是试图了解/找出我所描述的是否存在任何不确定性组件目前,我看不到。我认为这真的不值得投反对票。这真的不是它的工作方式。每个有工作的人都有保密数据,这是99.9%的人在这里。你的负担是花时间和精力使用公开的、自创的或盲目的数据制作一个可复制的例子,这样它就可以无需反映你的问题这是您的实际数据。由于没有包含可复制的示例,我投票将此问题作为离题题结束。@RockJake28;如果您可以编辑您的问题
sessionInfo()的结果,这将非常有用
来自您正在使用的每台计算机。在拟合原始模型或仅在使用交叉验证时,您是否获得了不同的结果:您是否将
set.seed
用作Hack-Rsuggesed@Hack-R我很感激你所说的,但我不是在找人来解决我的问题,这当然需要一个可复制的例子问题是“lme4的glmer函数为什么会在不同的机器上产生不同的结果?”,而不是如何修复它或诸如此类的问题。我想知道是否有
lme4
的某些部分使用的值会受到不同硬件的影响。@user20650一次完整运行需要几个小时,我已经添加了
set.seed
值,并将报告结果,我将使用
sessionIn更新fo()
请提供一个可复制的示例,您在两台计算机上设置了相同的种子值,对吗?由于保密原因,这是我能提供的最多信息。我不是在寻找问题的解决方案,我只是试图了解/找出我所描述的是否存在任何不确定的组件我没有看到。我不认为这真的值得否决。这真的不是它的工作方式。每个有工作的人都有保密数据,这是99.9%的人在这里。你的负担是花时间和精力使用公开的、自创的或盲目的数据制作一个可复制的例子,这样它就可以毫无疑问地反映你的问题艾丁