2016-10-30 26 views
0

函數glmer會在不同的機器上產生不同的結果嗎?機器中的硬件有很大不同,雖然都運行相同的操作系統,R和包版本(事實證明這實際上並非如此)R-glmer在不同機器上的不同結果(非確定性)

該公式具有分組二項式響應變量和22個連續固定效應,它們都在相同的比例尺和幾個隨機效應,這些是字符串,我正在使用鏈接函數logit

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

當使用火車和測試數據爲留一交叉驗證設置,我得到非常類似的結果。但是,在一臺機器上,我始終保持清潔的輸出,並且沒有警告;另一方面,我在每一次測試中都會收到警告。

N.B.火車/測試集是跨機器

EDIT相同:將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 

機2(不所以不錯的結果)

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是最可能引起問題的那個(我認爲)它是lme4的依賴關係。感謝您的評論,讓我在這裏。

+0

請提供一個可重複的示例http://stackoverflow.com/help/mcve話雖如此,您在兩臺計算機上設置了相同的種子值,對吧? –

+0

由於保密原因,這是我可以提供的最多信息。我不是在尋找解決我的問題的辦法,我只是試圖瞭解/發現是否有任何非確定性的組成部分,我所描述的我沒有看到。我認爲這不能保證投票。 – RockJake28

+2

事實並非如此。每個有工作的人都有機密數據,這裏有99.9%的人。您需要花費大量時間和精力來製作**可重現的示例**,使用公開的,自行創建的或不知情的數據,以反映您的問題而無需成爲您的實際數據。我正在投票結束這個問題,因爲沒有包含可重複的例子。 –

回答

2

我不確定這裏的「非確定性」是什麼意思;我通常會認爲在同一臺機器上連續運行相同的代碼可能會給出不同的結果。

對於大的,不穩定的問題,在相同的操作系統下,在不同的硬件平臺上獲得不同的結果會有些令人驚訝但並非不可能。當使用不同的編譯器在不同的操作系統下編譯時,我們當然會看到相同版本的軟件包(相同的R和C++代碼)給出不同的結果。如果這些差異在容差測試的任一側,那麼您將在一種情況下得到警告,而在另一種情況下則不會。我會更關心估計值在不同平臺上的分離程度,而不是您是否收到警告。

它肯定會縮小範圍,以確保您儘可能地做到儘可能相似(例如,您仍然在使用不同版本的R,並且正如您所指出的那樣,在不同的機器上使用不同版本的Matrix ... )

+0

「更新相同版本的包(相同的R和C++代碼)在使用不同編譯器編譯時會給出不同的結果「這正是我所需要的。謝謝。 – RockJake28

相關問題