2017-07-02 5 views
0

Ich versuche, den Mittelwert einer Zufallsvariablen mit R, mit Hilfe der Monte-Carlo-Simulation Methode zu berechnen, so schrieb ich diese Funktion:Berechnung Mittelwert mit R

> example <- function(n,B=10000) mean(replicate(B,all(sample(n):1:n))) 
> set.seed(0) 
> example(3) 

mit anderen Berechnete Programme dies sollte einen Wert in der Nähe von 2,6662, aber in RI halten gibt diese Ausgabe erhalten:

[1] 1 
There were 50 or more warnings (use warnings() to see the first 50) 
+0

Es gibt einige Fehler im Code. Die Verwendung von 'all' ist dort für logische Operationen nicht klar. Die Verwendung von 'replicate' ist nicht notwendig, wenn Sie nach einer einzelnen Wertausgabe suchen. Möglicherweise müssen Sie Ihr Ziel ein wenig weiter klären. – Suren

+0

Ich habe Replikat verwendet, weil dies das Konzept der Monte-Carlo-Simulation ist. Um es zu vereinfachen, wird nur der Mittelwert einer großen Datenmenge (hier 10000 Proben von n) so genau wie möglich genommen von nur 10 Proben wäre zum Beispiel nicht so genau), Replikat soll diese 10000 Proben erzeugen. – Manuel

+0

@Manuel Welches Ergebnis erwarten Sie von 'all (Beispiel (n): 1: n)'? –

Antwort

0

sein kann, was Sie wollen, dass der zweite Abschnitt des folgenden Codes ist. Bitte beachten Sie die Verwendung von Saatgut, Probenfunktion usw. in ihnen. Sie verwenden sie nicht richtig.

set.seed(42) 
example <- function(n,B=10000) mean(sample(1:n, n*B, replace = TRUE)) 
example(3) 

set.seed(42) 
example <- function(n,B=10000) mean(replicate(B, 
           sample(1:n, n, replace = TRUE))) 
example(3) 
+0

das scheint zu funktionieren, aber gibt nicht die richtigen Werte aus, die ich suche – Manuel

+1

In obigen Fällen, Probe 3 Werte von {1, 2, 3}, tut dies B-mal, und geben Sie den Mittelwert. Die Werte müssen um 2 sein. Von welcher Distribution haben Sie gedacht, dass Sie ab dem 2.6662 erwartet haben? – Suren

Verwandte Themen