最小二乗法を使用した結果は、私が見ることができる韻や理由なしに変化し、問題を関数自体 splines::ns
にたどったと思います。ns
問題を次のように減らしました。
require(splines)
N <- 0
set.seed(1)
for (i in 1:100) N <- N + identical(ns(1:10,3),ns(1:10,3))
N
私の結果は平均で約 39、範囲は 34 ~ 44 程度ですが、毎回 100 を期待していました。の結果ns
がランダムである必要があるのはなぜですか? 両方の場所でを代入bs
するns
と、予想どおり 100 になります。私set.seed(1)
が得たランダム性が R が意図したものではないことを実証したいと思っています。
RStudio と R バージョン 2.14.2 (2012-02-29) を使用したクリーン セッションでは、39、44、38 などを取得します。他の全員は 100 を取得しているようです。
詳細情報:
を代入splines::ns
しns
ても同じ結果になります。クリーンなバニラ セッションでも同じ結果が得られます。私のコンピューターには 8 つのコアがあります。
違いが発生した場合、通常または常に 2^-54 です。
Max <- 0
for (i in 1:1000) Max <- max( Max, abs(ns(1:10,3)-ns(1:10,3)) )
c(Max,2^-54)
結果で[1] 5.551115e-17 5.551115e-17
。この変動性は、将来的に大きな問題を引き起こすoptimize(...)$min
.
クリーンなバニラ セッションを使用した私の sessionInfo:
を使用して、クリーンなバニラセッションとして知られると私が理解しているものを作成しました
> .Last <- function() system("R --vanilla")
> q("no")
これによりセッションが吹き飛ばされ、再起動すると、クリーンなバニラ セッションが得られます。次に、Ben Bolker の明確な質問に答えて、クリーンなバニラ セッションの最初にこれを行いました。
> sessionInfo()
R version 2.14.2 (2012-02-29)
Platform: x86_64-pc-mingw32/x64 (64-bit)
locale:
[1] LC_COLLATE=English_United States.1252
[2] LC_CTYPE=English_United States.1252
[3] LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C
[5] LC_TIME=English_United States.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] Revobase_6.1.0 RevoMods_6.1.0 RevoScaleR_3.1-0 lattice_0.20-0
[5] rpart_3.1-51
loaded via a namespace (and not attached):
[1] codetools_0.2-8 foreach_1.4.0 grid_2.14.2 iterators_1.0.6
[5] pkgXMLBuilder_1.0 revoIpe_1.0 tools_2.14.2 XML_3.9-1.1
> require(splines)
Loading required package: splines
> N <- 0
> set.seed(1)
> for (i in 1:100) N <- N + identical(ns(1:10,3),ns(1:10,3))
> N
[1] 32