Rの乱数-Set.seed(N)[複製]


37

この質問にはすでに答えがあります:

set.seed()Rで擬似乱数生成に使用していることに気付きました。また、set.seed(123)結果を再現できることを保証するように、同じ番号を使用することも認識しています。

しかし、私が得られないのは、値自体の意味です。私はいくつかの機能で遊んでいます、そしていくつかの使用set.seed(1)またはset.seed(300)またはset.seed(12345)。その番号の意味(もしあれば)-そしていつ別の番号を使用すべきか。

set.seed(12345)たとえば、私が取り組んでいる本の中で、決定木用のトレーニングセットを作成するときに使用しています。次に、別の章でset.seed(300)、ランダムフォレストの作成に使用しています。

番号を取得しないでください。


6
これは役立ちますか? stackoverflow.com/questions/14684437/… また、R内の?set.seed()はかなり良い情報を提供します。
doug.numbers

6
シードを使用する主なポイントは、「乱数」の特定のシーケンスを再現できることです。一般的に言えば、それを行う必要がない場合、シードを設定しません。シード自体は、乱数発生器に「どこから開始するか」を伝える方法であることを除いて、固有の意味を持ちません。PIN番号と銀行口座の関係に少し似ていると思うかもしれません。PINは、数字の長い文字列(口座番号)に関連付けられているが、それは本質的に解釈可能量(ありませんされて解釈は、それを設定することで、あなたはそれを無視します)。
-Glen_b-モニカーの復活2014

4
記録のために、42は常に正しい種子である
Repmat

コメント:ランダムジェネレーターのみを設定することをお勧めします。(i)スクリプトをデバッグする、特定のエラーを見つけるなど、または(ii)結果を送信/公開してチェックできるようにする。
AADF

回答:


38

選択するシード番号は、乱数のシーケンスの生成に使用される開始点です。そのため、同じシード番号を使用すると同じ結果が得られます(同じ擬似乱数ジェネレーターを使用する場合)。2番目の質問に関する限り、Stataの同等の機能の説明からの次の短いスニペットが役立つ場合があります。

これを十分に強調することはできません。シードをあまり頻繁に設定しないでください。なぜこれがそんなに悪い考えであるかを見るために、制限の場合を考えてください:シードを設定し、1つの擬似乱数を描画し、シードをリセットし、再度描画して、続行します。取得する擬似乱数は、数学関数を実行するシードにすぎません。選択したシードがランダムに合格しない限り、取得した結果はランダムに合格しません。既にそのような番号を持っている場合、なぜ擬似乱数ジェネレーターを使用することに悩まされているのですか?

http://www.stata.com/manuals13/rsetseed.pdf


15
Stataがこんなに興味深いドキュメントを持っていることを知っていた人:「他の人は、十分な数字が含まれているかどうかを考えて、乱数を作成しようとします。結果はランダムである必要があります。これらの両方のルールを使用する」
ヘシアンの縮退

4

要するに、数字自体は実際には何の意味もありません!他の人のコードを見ている場合(上記の2つの例のように)、数字は関数の機能を変更しません。特定の機能には「良い」数字もありません。著者の選択次第です。

さらに、コードで一度だけシードを設定する場合は、好きな番号を選択できます。少し注意する必要があるのは、乱数を使用する他の関数とインターフェイスする場合、非自明なシードを選択することです(したがって、両方が同じシードを使用する可能性は低くなります) )。

ただし、Corcovadoが非常にうまく指摘しているように、一部のアプリケーションでは、選択を慎重に行う必要があります。数学的に擬似ランダムに生成された数の数字が必要な場合、選択した数字にパターンを付けることはできません。


1

Rのset.seed()関数は、(任意の)整数引数を取ります。したがって、1または123または300または12345などの引数を使用して、再現可能な乱数を取得できます。

また、TeachingDemosパッケージでは、char2seed関数を使用して、文字列に基づいてシードを設定できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.