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

时间:2016-10-30 00:09:55

标签: r lme4 non-deterministic

来自glmer的{​​{1}}函数在不同的机器上产生不同的结果有什么理由吗?机器中的硬件有很大差异,但都运行相同的操作系统,R和软件包版本(事实证明这并非如此)

该公式有一个分组二项式响应变量和22个连续固定效果,它们都是相同的比例和几个随机效果,它们是字符串,我正在使用lme4链接函数。

logit

当使用火车和测试数据集进行交叉验证时,我得到非常类似的结果。然而,在一台机器上,我始终保持清洁输出,没有任何警告;另一方面,我在测试的每个部分都收到了收敛警告。

N.B。列车/测试装置在机器之间是相同的

编辑:添加cbind(ill, not_ill) ~ 0 + fix1 + fix2 + ... + fix22 + (1|id/region/country) + (1|season)

计算机1 (这是一个发出好结果的那个

sessionInfo()

机器2 (效果不太好)

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 是最有可能导致问题的因素(我认为)它是Matrix的依赖关系。感谢您带来的评论。

1 个答案:

答案 0 :(得分:2)

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

对于大的,不稳定的问题,在同一操作系统下在不同硬件平台上获得不同结果会略微令人惊讶,但并非不可能。我们当然会看到在不同操作系统下使用不同编译器编译时,相同版本的包(相同的R和C ++代码)给出不同结果的情况。如果这些差异在公差测试的任何一方,那么您将在一个案例中而不是在另一个案例中获得警告。我会更关心估计在不同平台上的距离,而不是你是否收到警告。

它肯定会缩小范围,以确保您尽可能地做所有事情(例如,您仍然在不同的机器上使用不同版本的R,正如您所指出的,Matrix的不同版本...)