Wie wird eine Sequenz mit einem Mittelwert von ?


11

Ich weiß, wie man eine Sequenz mit dem Mittelwert . Wenn ich in Matlab beispielsweise eine Sequenz mit einer Länge von generieren möchte , lautet dies:±10±110000

2*(rand(1, 10000, 1)<=.5)-1

Wie kann man jedoch eine -Sequenz mit einem Mittelwert von erzeugen , dh wobei leicht bevorzugt wird?±10.051

Antworten:


18

Ihr gewünschter Mittelwert ergibt sich aus der folgenden Gleichung:

NpN(1p)N=.05

woraus folgt, dass die Wahrscheinlichkeit der 1ssein sollte.525

In Python:

x = np.random.choice([-1,1], size=int(1e6), replace = True, p = [.475, .525])

Beweis:

x.mean()
0.050742000000000002

1'000 Experimente mit 1'000'000 Proben von 1s und -1s: Geben Sie hier die Bildbeschreibung ein

Der Vollständigkeit halber (Hutspitze an @Elvis):

import scipy.stats as st
x = 2*st.binom(1, .525).rvs(1000000) - 1
x.mean()
0.053859999999999998

1'000 Experimente mit 1'000'000 Proben von 1s und -1s:

Geben Sie hier die Bildbeschreibung ein

Und schließlich aus einer gleichmäßigen Verteilung, wie von @ Łukasz Deryło (auch in Python) vorgeschlagen:

u = st.uniform(0,1).rvs(1000000)
x = 2*(u<.525) -1
x.mean()
0.049585999999999998

1'000 Experimente mit 1'000'000 Proben von 1s und -1s:

Geben Sie hier die Bildbeschreibung ein

Alle drei sehen praktisch identisch aus!

BEARBEITEN

Einige Zeilen zum zentralen Grenzwertsatz und die Ausbreitung der resultierenden Verteilungen.

Zuallererst folgen die Mittelzüge tatsächlich der Normalverteilung.

Zweitens hat @Elvis in seinem Kommentar zu dieser Antwort einige nette Berechnungen zur genauen Verteilung der Mittelwerte über 1'000 Experimente (ca. (0,048; 0,052)), 95% -Konfidenzintervall, durchgeführt.

Und dies sind Ergebnisse der Simulationen, um seine Ergebnisse zu bestätigen:

mn = []
for _ in range(1000):
    mn.append((2*st.binom(1, .525).rvs(1000000) - 1).mean())
np.percentile(mn, [2.5,97.5])
array([ 0.0480773,  0.0518703])

Gut gemacht. Mein Punkt bei den Bernoulli war es, die Frage auf eine bekannte Wahrscheinlichkeitsverteilung zu reduzieren; Aus Sicht der Implementierung waren Ihre Antwort und Łukasz 'perfekt.
Elvis

Kein Scherz, deins ist am wissenschaftlichsten und das Beste! ;) Ich habe eine halbe Sekunde lang über die Binomialverteilung nachgedacht, aber das war nicht genug, um daraus -1 und 1 zu machen, also habe ich mir deine Lösung "wie sie ist" ausgeliehen, danke!
Sergey Bushmanov

1
var(Y)=4var(X)=4p(1p)=0.9975Y0.9991060.999×1030.05±1.96×0.999×103(0.048;0.052)

12

11Y=2X1XpE(Y)=2E(X)1=2p1pp=0.525

In R können Sie Bernoulli - Variablen mit erzeugen rbinom(n, size = 1, prob = p), so zum Beispiel

x <- rbinom(100, 1, 0.525)
y <- 2*x-1

5

N[0,1]

Dann ist Ihr erwarteter Wert

10.525+(1)(10.525)=0.5250.475=0.05

Ich bin kein Matlab-Benutzer, aber ich denke, es sollte so sein

2*(rand(1, 10000, 1)<=.525)-1

2
Dies ist hier eine korrekte Methode zur Verwendung der inversen Transformationsabtastung .
Tim

Tippfehler jetzt behoben.
Łukasz Deryło

4

Sie müssen mehr 1s als -1s generieren. Genau 5% mehr 1s, weil Sie möchten, dass Ihr Mittelwert 0,05 beträgt. Sie erhöhen also die Wahrscheinlichkeit von 1s um 2,5% und verringern -1s um 2,5%. In Ihrem Code entspricht dies einer Änderung 0.5von 0.525, dh von 50% auf 52,5%


2

Nur für den Fall, dass Sie einen GENAUEN Wert von 0,05 wünschen, können Sie den folgenden R-Code in MATLAB verwenden:

sample(c(rep(-1, 95*50), rep(1, 105*50)))

-1 Diese Antwort ist falsch! Das einzige, was dieser Code tut, ist, dass er den statischen Wertevektor zufällig permutiert. Die Ausgabe ist nicht zufällig!
Tim

2
@ Tim Warum funktioniert es nicht? Es gibt eine Liste von -1 und 1 in zufälliger Reihenfolge mit Zählungen zurück, die einen genauen Mittelwert von 0,05 gewährleisten sollen.
ddunn801

1
@ Tim Diese Lösung ist zufällig. Haben Sie versucht, es wiederholt auszuführen?
whuber

@Wenn dies die gleiche Lösung ist wie die von Amos Coats vorgeschlagene, besteht der einzige Unterschied darin, dass die Werte permutiert werden. Die statistischen Eigenschaften einer solchen Probe sind deterministisch und konstant.
Tim

3
@ Tim Ich denke, Sie lesen möglicherweise einige ungerechtfertigte Annahmen in diese Frage, die nicht explizit gemacht werden. Obwohl die Frequenzen - und damit alle Momente - der ungeordneten Stichprobe selbst konstant sind, variiert eine Vielzahl von "statistischen Eigenschaften" der erzeugten Reihe zufällig. Da das Beispiel in der Frage ein Array generiert und Arrays keine Mengen sind - Ordnungsangelegenheiten in einem Array - halte ich diese Interpretation für fair (und sie beleuchtet die Frage). Die von Coats veröffentlichte "Lösung" ist dagegen ein guter Witz - aber SE scherzt nicht gern.
whuber
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.