Die Pakete stats, statevalf und statplots sind etwas spröde bezüglich der Benutzung für den Unterricht, da sie auf ein anderes Zielpublikum ausgerichtet sind. Es empfiehlt sich daher, diese Pakete durch einige eigene Funktionen zu kapseln. Außerdem scheint statevalf bezüglich der summierten diskreten Verteilungen fehlerhaft zu sein, was ebenfalls eigene Lösungen erfordert.
Inhaltsverzeichnis
-----------------------
Berechnen und erzeugen von B(n,p)
Will man die Binomialverteilung B(n,p) berechnen, so kann man zunächst die Wahrscheinlichkeit P(X=k) wie folgt berechnen:
(hier ist n=10, p=0,5 und k=3):
>
with(stats,statevalf):
statevalf[pf,binomiald[10,0.5]](3);
Dieser komplizierte Aufruf (der zudem bei wiederholtem Aufruf durch ständige 'warnings' begleitet wird) ist in der Prozedur B_npk gekapselt. Ein Aufruf mit den gleichen Werten für n, p und k sieht dann so aus:
> B_npk(10,0.5,3);
Will man eine bestimmte Binomialverteilung häufiger verwenden, kann man die folgende Funktion B_np zur Erzeugung einer Binomialverteilung verwenden:
> B:=B_np(10,0.5);
Man kann dann wie folgt vorgehen:
>
B(0);
B(3);
zurück zum Anfang
>
Will man die summierte Wahrscheinlichkeitsdichte berechnen, so kann man die Prozedur B_npk_sum benutzen.
> B_npk_sum(10,0.5,3);
Auch hier kann man einen abkürzenden Aufruf namens B_np_sum verwenden, wenn man immer mit der gleichen B(n,p)-verteilten Funktion arbeitet.
> sB:=B_np_sum(10,0.5);
>
sB(3);
sB(10);
zurück zum Anfang
>
Wert aus einem Intervall für k
Häufig interessiert man sich nicht für die Wahrscheinlichkeit eines einzelnen Wertes der Zufallsvariablen, sondern für die Wahrscheinlichkeit, dass die Zufallsvariable einen Wert aus einem bestimmten Intervall für k annimmt. Dies leistet die Prozedur B_npk_sum_intervall .
> B_npk_sum_intervall(100,0.3,20,30);
> evalb(B_npk_sum_intervall(10,0.5,0,0)=B_npk(10,0.5,0));
zurück zum Anfang
>
Umkehrung der Summenverteilung
Für viele Aufgaben benötigt man die Umkehrung der summierten Verteilung. Mit Hilfe der Prozeduren linv_np_sum und rinv_np_sum kann man den Bereich bestimmen, bis zu dem die Wahrscheinlichkeit die angegebene Grenze nicht überschreitet
> linv_np_sum(10,0.4,0.2);
Bei 10 Versuchen liegt die Wahrscheinlichkeit für 0 bis 2 Treffer unter 20 Prozent!
Zur Kontrolle seien die Wahrscheinlichkeiten nochmals aufsummiert:
> B_npk_sum(10,0.4,2);
> B_npk_sum(10,0.4,3);
> rinv_np_sum(10,0.4,0.2);
Bei 10 Versuchen liegt die Wahrscheinlichkeit für 6 bis 10 Treffer unter 20 Prozent!
Auch hier die Kontrolle:
> 1-B_npk_sum(10,0.4,5);
> 1-B_npk_sum(10,0.4,4);
zurück zum Anfang
>
Histogramme, Stabdiagramme, Polygonzüge
Das Histogramm einer bestimmten Binomialverteilung erhält man am einfachsten mit der Prozedur histo :
> histo(10,0.5,color=cyan);
Mit den Prozeduren stab bzw. zug erzeugt man eine grafische Darstellung der Binomialverteilung in einem Stabdiagramm bzw. als Polygonzug:
> stab(10,0.5,color=blue);
> zug(10,0.5,color=sienna,thickness=2);
Mit dem Befehl display lassen sich auch verschiedene Darstellungen in einem Bild kombinieren:
>
plots[display]([histo(100,0.4,color=cyan),histo(100,0.6,color=magenta)],\
view=[0..100,0..0.1]);
>
plots[display](histo(10,0.5,color=cyan),stab(10,0.5,color=blue),zug(10,0.5,\
color=navy,thickness=2));
zurück zum Anfang
>
Animation zu Bedeutung der Trefferwahrscheinlichkeit p bzw. der Anzahl n
Die Bedeutung der Trefferwahrscheinlichkeit p für die Verteilung lässt sich sehr deutlich in der folgenden Animation bv_ani veranschaulichen.
>
bv_ani(15,[0.001,0.01,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,0.99,0.999],\
color=red, view=[0..16,0..1]);
A nimation !
Die Prozedur bv_ani kann ebenfalls die Bedeutung von n bei fester Trefferwahrscheinlichkeit p demonstrieren. Dabei wird die Verbreiterung des Histogramms und die Verschiebung des Maximums zu größeren Anzahlen hin gut sichtbar:
> bv_ani(1..70,0.5,color=cyan,view=[-1..50,0..0.5]);
A nimation !
zurück zum Anfang
>
Erwartungswert, Varianz und Standardabweichung
Der Erwartungswert
einer B(n,p)-verteilten Zufallsvariablen ist definiert als
, die Standardabweichung als
,die Varianz als Quadrat der Standardabweichung aus
. Die Prozeduren
B_mu
,
B_sigma
und
B_varianz
berechnen diese Werte.
> mu:=B_mu(20,0.5);
> sigma:=B_sigma(20,0.5);
> V:=B_varianz(20,0.5);
Man kann leicht einsehen, dass für festes n die Varianz einer B(n;p)-verteilten Zufallsvariablen für p=0,5 maximal ist:
> plot(B_varianz(10,p),p=0..1);
Das Schaubild der Funktion, die für festes n zu Werten von p zwischen 0 und 1 die Varianz liefert, ist eine nach unten geöffnete Parabel, die bei p=0 und p=1 den Wert 0 hat, ihr Maximum also bei p=0,5 annimmt.
Die Bedeutung von Erwartungswert und Standardabweichung lassen sich mit Hilfe der Prozedur histo_mu_sigma auch grafisch darstellen.
> histo_mu_sigma(20,0.5,color=aquamarine,view=[0..20,0..0.22]);
Der Streifen hat im obigen Schaubild die Breite
. Will man nun wissen, mit welcher Wahrscheinlichkeit eine B(n;p)-verteilte Zufallsvariable einen Wert im Intervall
annimmt, kann man dies mit der Funktion
B_zweisigw
berechnen lassen .
> B_zweisigw(100,0.4);B_zweisigw(1000,0.8);B_zweisigw(1500,0.5);
Es fällt auf, dass die Werte der Intervallwahrscheinlichkeiten dicht beieinander liegen, obwohl sie von verschiedenen Binomialverteilungen stammen. Wir untersuchen dies näher, indem wir eine größere Anzahl dieser Intervallwahrscheinlichkeiten berechnen und graphisch darstellen:
Achtung:
Die Rechenzeit beträgt auch auf einem Pentium III 450 ca. 3min.
>
p1:=plot([seq([n*5,B_zweisigw(n*5,0.8)],n=30..300)],view=[0..1500,0.9..1],\
color=red,style=POINT,symbol=CIRCLE):
> plots[display]({p1,plot(0.955,x=0..1500,color=blue)});
Achtung:
Die Rechenzeit beträgt auch auf einem Pentium III 450 ca. 2min.
>
p2:=plot([seq([n*5,B_zweisigw(n*5,0.5)],n=30..300)],view=[0..1500,0.9..1],\
color=red,style=POINT,symbol=CIRCLE):
> plots[display]({p2,plot(0.955,x=0..1500,color=blue)});
Achtung: Die Rechenzeit beträgt auch auf einem Pentium III 450 ca. 5min.
>
p3:=plot([seq([n*5,B_zweisigw(n*5,0.01)],n=30..300)],view=[0..1500,0.9..1],\
color=red,style=POINT,symbol=CIRCLE):
> plots[display]({p3,plot(0.955,x=0..1500,color=blue)});
>
Das Ergebnis legt den empirischen Befund nahe, dass die Wahrscheinlichkeit eines Ergebnisses in der
- Umgebung von µ wenigstens 95,5% beträgt. Man kann diesen Befund nun ausnutzen, um aus Versuchen Schätzungen von p für eine B(n;p)-verteilte Zufallsvariable zu gewinnen.
Geht man zunächst von der Zufallsvariablen X über zu Z =
X, so erhält man für die Standardabweichung
und für den Erwartungswert
.
Wegen
gilt daher
.
Für
geht dieser Wert gegen 0, d.h. die 2
-Umgebung um den Erwartungswert, in der 95,5% der Ergebnisse liegen kann für genügend großes n beliebig klein gemacht werden. Man kann daher das Ergebnis von Z als Schätzwert für das zu Grunde liegende p verwenden. Man spricht in diesem Fall von einer Punktschätzung.
Will man eine genauere Aussage über die möglichen Werte von p machen, so kann man mit dem Ergebnis des Zufallsversuchs ein
Konfidenzintervall
bestimmen. Zu dem Konfidenzintervall sollen alle Werte von p gehören, für die das Versuchsergebnis im
- Bereich um den Erwartungswert der zugehörigen Zufallsvariablen liegt. Für solche Werte von p gilt:
Dabei sind
n
und
bekannt, die Ungleichung kann also nach p aufgelöst werden. Die Prozedur
B_konfidenz
berechnet dieses Intervall.
> B_konfidenz(1000,518);B_konfidenz(10000,5180);B_konfidenz(2000,231);
>
Man kann sagen, dass für
-Werte im jeweils berechneten Konfidenzintervall der im Versuch erhaltene Wert der Zufallsvariablen X auf einem Signifikanzniveau
nicht zu einer Ablehnung der Nullhypothese
:
geführt hätten.
Man kann die bisherigen Erkenntnisse auch dazu benutzen, den minimalen Umfang einer Stichprobe zu bestimmen, die den Wert des Parameters p mit einer vorgegebenen Genauigkeit g (auf dem Signifikanzniveau
) liefern soll. In diesem Fall muss die
-Umgebung kleiner als die vorgegebene Genauigkeit g sein:
Daraus erhält man für n die Abschätzung:
Weiß man nicht, in welchem Bereich sich p befindet, muss man den ungünstigsten Fall p=0,5 annehmen. Man erhält dann die Abschätzung:
Will man also die Trefferwahrscheinlichkeit eines Laplace-Versuchs mit einem Signifikanzniveau
auf 2,5% genau bestimmen, so muss man mindestens
> ceil(1/(0.025^2));
Versuche machen, wenn über die Trefferwahrscheinlichkeit nichts bekannt ist. (Was ist in diesem Zusammenhang von Umfragen zu politischen Fragen zu halten, bei denen nur 1000 Personen befragt werden?)
Ist schon bekannt, dass das voraussichtliche Ergebnis im Bereich von p=0,2 liegt, so kann man das Ergebnis auch mit
> ceil(4*0.2*0.8/(0.025^2));
>
Versuchen in der gewünschten Genauigkeit erwarten. Man nutzt hier wieder aus, dass die Varianz einer B(n;p)-verteilten Zufallsvariablen für p=0,5 den Maximalwert erreicht und für p-Werte nahe bei 0 oder 1 deutlich kleiner ist.
zurück zum Anfang
>
Man kann auch leicht
Ablehnungsbereiche für Tests mit der Binomialverteilung
zu bestimmen. Dabei wird die maximale Wahrscheinlichkeit
, mit der eine zutreffende Nullhypothese über den Wert der Trefferwahrscheinlichkeit p verworfen wird (Fehler 1. Art) vorgegeben. Der Ablehnungsbereich des Tests besteht aus allen Ergebnissen, für die die Nullhypothese verworfen wird. Die Wahrscheinlichkeit aller dieser Ergebnisse darf zusammen nicht größer als
sein. Die Wahrscheinlichkeit
wird als das Signifikanzniveau des Tests bezeichnet. In der Praxis werden dafür häufig die Werte 0,05 und 0,001 verwendet.
Die Prozeduren
links_Test
,
rechts_Test
und
beid_Test
erlauben die entsprechenden Tests.
Linksseitiger Test
(
:
): Gesucht ist ein maximales k mit
für eine
-verteilte Zufallsvariable X.
> links_Test(100,0.4,0.05);
Bei einem linksseitigen Test mit n=100 und
kann die Nullhypothese auf dem Signifikanzniveau
bis inklusive 31 Treffern abgelehnt werden.
Rechstseitiger Test
(
:
): Gesucht ist ein minimales k mit
für eine
-verteilte Zufallsvariable X.
> rechts_Test(150,0.02,0.05);
Bei einem rechtsseitigen Test mit n=150 und
kann die Nullhypothese auf dem Signifikanzniveau
ab 7 Treffern abgelehnt werden.
Beidseitiger Test
Bei einem rechtsseitigen Test mit n=150 und
kann die Nullhypothese auf dem Signifikanzniveau
ab 7 Treffern abgelehnt werden
> beid_Test(100,0.4,0.05);
>
Fehler 2. Art
Als Fehler zweiter Art beim Testen einer Hypothese der Form
:
bezeichnet man den Fehler, die Nullhypothese nicht abzulehnen, obwohl p einen von
verschiedenen Wert hat. Die Wahrscheinlichkeit
, diesen Fehler zu begehen, hängt natürlich vom wahren Wert von p ab. Für ein festes p dieser Art ist diese Wahrscheinlichkeit
gleich der Wahrscheinlichkeit, dass die zu diesem p gehörende Zufallsvariable einen Wert annimmt, der nicht zur Ablehnung der Nullhypothese führt. Die Prozedur
guete
bestimmt die Fehlerwahrscheinlichkeit
für ein p direkt mit der oben angegebenen Funktion
B_npk_sum_intervall
bestimmen.
Man definiert die
Gütefunktion
eines Test mit:
Diese Funktion gibt an, mit welcher Wahrscheinlichkeit der Test (festgelegt durch die Anzahl n der Versuche, den kleinsten Wert ug und den größten Wert og, für die die Nullhypothese nicht verworfen wird) die Nullhypothese verwirft, wenn die wirkliche Trefferwahrscheinlichkeit p beträgt. Für
erhält man damit gerade die Wahrscheinlichkeit
für den Fehler erster Art. Man kann sich diese Gütefunktion für einen festen Test auch zeichnen lassen. Wir testen die Nullhypothese p=0,4 bei 100 Versuchen und lehnen sie ab für Werte kleiner 30 und größer 50:
> plot([guete(100,p,30,50),0.9,0.1],p=0..1,0..1,scaling=constrained,color=[red,green,blue]);
Mit mehr als 90% Wahrscheinlichkeit (grüne Linie) wird die Nullhypothese ( p=0,4) für Werte kleiner als 0,24 und größer 0,56 abgelehnt. Die Wahrscheinlichkeit, dass die Nullhypothese auch für p=0,4 abgelehnt wird, beträgt etwa 0,03. Mit weniger als 10% Wahrscheinlichkeit abgelehnt (blaue Linie) werden p-Werte zwischen etwa 0,36 und 0,44, eine recht große Spanne. Will man die Nullhypothese schärfer testen, indem man das Konfidenzintervall verkleinert, so erhält man für ein Konfidenzintervall zwischen 35 und 45 Treffern:
> plot([guete(100,p,35,45),0.9],p=0..1,0..1,scaling=constrained,color=[red,green]);
Wie man sieht, werden hier zwar von der Nullhypothese abweichende p-Werte schneller abgelehnt, dafür ist aber auch die Wahrscheinlichkeit für den Fehler 1. Art auf 26% gewachsen. Die einzige Möglichkeit, einen Test von größerer Trennschärfe zu erhalten, besteht darin, die Anzahl der Versuche zu erhöhen:
>
plot([guete(1000,p,370,430),0.9,0.1],p=0..1,0..1,scaling=constrained,\
color=[red,green,blue]);
zurück zum Anfang