[Maple OLE 2.0 Object]

Überblick

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);

.1171875000

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);

.1171875000

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);

B := proc (k) options operator, arrow; binomial(10,...

Man kann dann wie folgt vorgehen:

> B(0);
B(3);

.9765625e-3

.1171875000

zurück zum Anfang

>

Summenverteilung

Will man die summierte Wahrscheinlichkeitsdichte berechnen, so kann man die Prozedur B_npk_sum benutzen.

> B_npk_sum(10,0.5,3);

.1718750000

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 := proc (k) options operator, arrow; 1.-1.*sum(....

> sB(3);
sB(10);

.1718750000

1.

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);

.5402363925

> evalb(B_npk_sum_intervall(10,0.5,0,0)=B_npk(10,0.5,0));

true

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);

.1672897536

.3822806016

> 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);

.1662386176

.3668967424

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);

[Maple Plot]

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);

[Maple Plot]

[Maple Plot]

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]);

[Maple Plot]

> plots[display](histo(10,0.5,color=cyan),stab(10,0.5,color=blue),zug(10,0.5,\
color=navy,thickness=2));

[Maple Plot]

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 !

[Maple Plot]

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 !

[Maple Plot]

zurück zum Anfang

>

Erwartungswert, Varianz und Standardabweichung

Der Erwartungswert mu einer B(n,p)-verteilten Zufallsvariablen ist definiert als mu := n*p , die Standardabweichung als sigma := sqrt(n*p*(1-p)) ,die Varianz als Quadrat der Standardabweichung aus sigma^2 = n*p*(1-p) . 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);

mu := 10.0

sigma := 2.236067978

V := 5.00

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);

[Maple Plot]

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]);

[Maple Plot]

Der Streifen hat im obigen Schaubild die Breite 2*sigma . Will man nun wissen, mit welcher Wahrscheinlichkeit eine B(n;p)-verteilte Zufallsvariable einen Wert im Intervall [mu-2*sigma, mu+2*sigma] 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);

.9684629953

.9639318056

.9586625893

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)});

[Maple Plot]

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)});

[Maple Plot]

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)});

[Maple Plot]

>

Das Ergebnis legt den empirischen Befund nahe, dass die Wahrscheinlichkeit eines Ergebnisses in der 2*sigma - 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 = 1/n X, so erhält man für die Standardabweichung sigma[Z] = sqrt(p*q/n) und für den Erwartungswert mu[z] = p .

Wegen sqrt(p*q) <= 1/2 gilt daher sigma[Z] <= 1/(2*sqrt(n)) .

Für proc (n) options operator, arrow; infinity end proc... geht dieser Wert gegen 0, d.h. die 2 sigma -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 2*sigma - Bereich um den Erwartungswert der zugehörigen Zufallsvariablen liegt. Für solche Werte von p gilt:

abs(X/n-p) <= 2*sqrt(p*(1-p)/n)

Dabei sind n und X/n 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);

[.4864, .5494]

[.5080, .5280]

[.1020, .1306]

>

Man kann sagen, dass für p[0] -Werte im jeweils berechneten Konfidenzintervall der im Versuch erhaltene Wert der Zufallsvariablen X auf einem Signifikanzniveau alpha = 0, 455 nicht zu einer Ablehnung der Nullhypothese H[0] : p = p[0] 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 alpha = 0, 455 ) liefern soll. In diesem Fall muss die 2*sigma -Umgebung kleiner als die vorgegebene Genauigkeit g sein:

2*sqrt(p*(1-p)/n) <= g

Daraus erhält man für n die Abschätzung:

4*p*(1-p)/(g^2) <= n

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:

1/(g^2) <= n

Will man also die Trefferwahrscheinlichkeit eines Laplace-Versuchs mit einem Signifikanzniveau alpha = 0, 455 auf 2,5% genau bestimmen, so muss man mindestens

> ceil(1/(0.025^2));

1600

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));

1024

>

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

>

Testen von Hypothesen

Man kann auch leicht Ablehnungsbereiche für Tests mit der Binomialverteilung zu bestimmen. Dabei wird die maximale Wahrscheinlichkeit alpha , 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 alpha sein. Die Wahrscheinlichkeit alpha 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

( H[0] : p[0] <= p ): Gesucht ist ein maximales k mit P(X <= k) <= alpha für eine B(n,p[0]) -verteilte Zufallsvariable X.

> links_Test(100,0.4,0.05);

[0 .. 31]

Bei einem linksseitigen Test mit n=100 und p[0] = .4 kann die Nullhypothese auf dem Signifikanzniveau alpha = .5e-1 bis inklusive 31 Treffern abgelehnt werden.

Rechstseitiger Test

( H[0] : p <= p[0] ): Gesucht ist ein minimales k mit P(k <= X) <= alpha für eine B(n,p[0]) -verteilte Zufallsvariable X.

> rechts_Test(150,0.02,0.05);

[7 .. 150]

Bei einem rechtsseitigen Test mit n=150 und p[0] = .2e-1 kann die Nullhypothese auf dem Signifikanzniveau alpha = .5e-1 ab 7 Treffern abgelehnt werden.

Beidseitiger Test

Bei einem rechtsseitigen Test mit n=150 und p[0] = .2e-1 kann die Nullhypothese auf dem Signifikanzniveau alpha = .5e-1 ab 7 Treffern abgelehnt werden

> beid_Test(100,0.4,0.05);

[[0 .. 30], [51 .. 100]]

>

Fehler 2. Art

Als Fehler zweiter Art beim Testen einer Hypothese der Form H[0] : p = p[0] bezeichnet man den Fehler, die Nullhypothese nicht abzulehnen, obwohl p einen von p[0] verschiedenen Wert hat. Die Wahrscheinlichkeit beta , diesen Fehler zu begehen, hängt natürlich vom wahren Wert von p ab. Für ein festes p dieser Art ist diese Wahrscheinlichkeit beta 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 beta für ein p direkt mit der oben angegebenen Funktion B_npk_sum_intervall bestimmen.

Man definiert die Gütefunktion eines Test mit: guete := proc (n, p, ug, og) options operator, arro...

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
p = p[0] erhält man damit gerade die Wahrscheinlichkeit alpha 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]);

[Maple Plot]

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]);

[Maple Plot]

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]);

[Maple Plot]

zurück zum Anfang