DMUG-Archiv 2015

Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

Re: [Dmug] Qualitätsmanagement: theoretische Ergebnisse mit simulierten vergleichen

Hallo Hans, Hallo Udo
 
vielen Dank für eure Tipps.
 @ Hans:
Ich hab den ersten Befehl  so umgeschrieben wie du es gesagt hast. 
Es klappt jetzt auch :-)
 
Also kann ich jetzt sagen, wie viele 0 und 1 ich im Los (80 Zufallszahlen) habe, um zu wissen ob das Los gut oder 
schlecht ist. 
Und wie viele 0 und 1 ich in der Stichprobe n habe um zu sagen, ob ich annehme oder zurückweise.
 
Da ich die Werte mit den theoretischen Ergebnissen vergleichen soll, muss ich das Los nicht nur 1 mal erzeugen sondern 
z.B. 10.000 mal. 
Das Vorgehen wird sich ja nicht ändern sondern ich müsste in der Schleife sagen, mache alles wie vorher nur 10.000 mal 
und berechne darüber die gemittelten Werte. 
Sprich alle Ergebnisse von den 10.000 Simulationsdurchgängen durch die Anzahl der Simulationsschritte (10.000) teilen?
Ich glaube, dann könnte ich die Wahrscheinlichkeit die da raus kommt mit den theoretischen Wahrscheinlichkeiten 
vergleichen.
Genau das selbe, kann ich dann mit der Stichprobe machen?
 
Ich habe es mal mit deinem Modul ausprobiert.
Das Modul, welches du angegeben hast erzeugt, zufällig 20 Stichproben und zählt wie viele 1 vorgekommen sind. 
Ich habe /n ergänzt damit ich die Wahrscheinlichkeit erhalte. 
 
 fc1:=Module[{},

  los1=If[#<p,0,1]&/@los;

  stichprobe1=los1[[#]]&/@RandomInteger[{1,80},n];Total[stichprobe1]/n

  ]
 
 fc1tab=Table[fc1,{AnzSim}]
 
Die Ergebnisse habe ich mit folgendem Befehl zusammengezählt:
 
 Gesamtfc1=Total[fc1tab] 
und am Ende durch die Anzahl der Simulationsschritte geteilt:
 
 pAnnahme=Gesamtfc1/AnzSim//N
 
 
Als  Ergebnis habe ich 
 0.9538461538461539` erhalten. 
 Das Ergebnis für die angenommen Lose kommt mir im Vergleich zu den theoretischen Werten (0,720625) zu groß vor. Das 
die Werte nicht 1:1 übereinstimmen sollen, ist mir schon klar, da es sich hier um simulierte Werte handelt, kann das 
schon ein wenig abweichen. 
 
Dann wollte ich dein Modul so umbauen, dass er die guten Lose aus dem Los (80 Zz) a´10.000 Simulationsdurchläufe (also 
auch z.B. 10.000 Wahrscheinlichkeiten ausgibt und wie oben zusammenzählt und durch die Anzahl der Simulationsschritte 
teilt, aber ich erhalte nicht die gewünschten Ergebnisse sondern nur fc2 als Ergebnis. Ich befürchte ich habe irgendwo 
einen Fehler.
 
Ich sende euch mal den Code zu sowie die Ergebnisse der theoretischen Ergebnisse. Vill. weiß einer von euch, ob der 
Ansatz so richtig ist?
 
Liebe Grüße
Jeany
 
From: h.dolhaine@XXXXXXX.de
To: ivi-jeany@XXXXXXX.de
Subject: AW: AW: [Dmug] Qualitätsmanagement: theoretische Ergebnisse mit simulierten vergleichen
Date: Mon, 16 Mar 2015 22:32:33 +0100
















Guten Abend Jeany,

 

If [ # < p , 0, 1 ] &  ist eine
Funktion, kenntlich gemacht durch das Zeichen &, und die Variable der
Funktion heißt #.

 

Probier mal If [ # < .4 , 0, 1 ] &[
x ]  und setze für x per Hand verschiedene Zahlen ein, größer und kleiner als
0.4.

 

Das / @ heißt, dass die Funktion auf alle
Elemente der folgenden Liste angewendet wird.

 

Probier f[#]&/@{a,b,c}.

 

Jetzt habe ich geschlampt: los=If[#<p,0,1]&/@RandomReal[{0,1},LosG]
erzeugt bei jedem Aufruf neue 80 Zufallszahlen, auf die dann das If angewendet
wird.  Um das Resultat mit dem ersten los vergleichbar zu machen wäre 

 

los=RandomReal[{0,1},LosG]

los=If[#<p,0,1]&/@los]

 

zu schreiben. Der erste Befehl erzeugt die Zufallszahlen, und der
zweite Befehl operiert dann genau auf den eben erzeugten Zahlen.

Puristen würden ggf. los retten bzw. nicht überschreiben und

 

los=RandomReal[{0,1},LosG]

los1=If[#<p,0,1]&/@los]

 

nehmen. Dann müssen natürlich alle weiteren Befehle unten auch auf
los1 angewendet werden.

 

Also: ja, es werden unter 2) neue Zufallszahlen erzeugt.

 

Und: genau, bei den Stichproben habe ich eben aus Gründen der Vergleichbarkeit
die Zufallszahlen genau einmal erzeugt.

 

a[[ i ]] ist das i-te Element der Liste a. Und Du ahnst es schon, los[[#]]&
ist eine Funktion, die das #-te Element von los zurückgibt, wenn man für # eine
Zahl einsetzt.

 

Der Module ist ein Konstrukt, mit dem man eine kompliziertere
Funktionen schreiben kann. Die besteht hier aus den drei Befehlen von oben.

 

Noch Fragen? 

 

Einen schönen Abend

HD

 

 

 









Von: Ivana Pejic
[mailto:ivi-jeany@XXXXXXX.de] 

Gesendet: Montag, 16. März 2015
21:21

An: h.dolhaine@XXXXXXX.de; 'Udo und Susanne Krause'; demug@XXXXXXX.ch

Betreff: RE: AW: [Dmug]
Qualitätsmanagement: theoretische Ergebnisse mit simulierten vergleichen



 



Hallo zusammen, 

 

Danke für Eure Hilfe.

Aber ich verstehe einige Sachen in dem Code leider nicht

 

Den ersten Befehl habe ich verstanden.

1) los=RandomReal[{0,1},LosG]

Aber schon beim zweiten habe ich so meine Schwierigkeiten.

2)
los=If[#<p,0,1]&/@RandomReal[{0,1},LosG]

Was genau bedeutet das Zeichen #? In der Hilfe steht das erste Argument?
Ist mit dem ersten Argument der hintere Teil "&/@..."
gemeint? Ist das so eine übliche Schreibform? Habe ich nämlich vorher noch nie
gesehen.

 

Die nächste Frage, die sich mir stellt ist, ob die unter 1) erzeugten
80 Zz mit dem Befehl 2) unten übereinstimmen sollen? Sprich wenn
oben z.B eine 0,002 herausgekommen ist, dann soll unter 2) eine 0 geliefert
werden? Ich habe beide Ergebnisse Outputs ( 1) und 2)) verglichen und eben
nicht die erwarteten Ergebnisse unter 2)erhalten? Somit meine Frage, werden
unter 2) neue ZV erzeugt? Dann ist es klar, dass die Ergebnisse nicht mit 1)
übereinstimmen können. Hätte jetzt aber gedacht dass das Zeichen # sich
auf den letzten Output bezieht?

 

Bei folgenden Befehlen sieht es dann aber anders aus:

3)stichprobe=RandomInteger[{1,80},n]

 

4) stichprobe1=los[[#]]&/@Stichprobe

Befehl
4) bezieht sich dann allerdings doch auf 3). Z.B. Ergebnisse unter los 
(0,1,1,0...)

Stichprobe (1,2,3) liefert Stichporbe1 (0,1,1)

Also genau den Output der zu den anderen Outputs passt.

 

 

Bevor ich zur Schleife noch Fragen stelle, wollte ich erst den ersten Teil
verstehen.

 

Danke und LG

Jeany

 

 



 



> From: h.dolhaine@XXXXXXX.de

> To: su.krause@XXXXXXX.ch; ivi-jeany@XXXXXXX.de; demug@XXXXXXX.ch

> Subject: AW: [Dmug] Qualitätsmanagement: theoretische Ergebnisse mit
simulierten vergleichen

> Date: Sun, 15 Mar 2015 20:07:40 +0100

> 

> Liebe Jeany,

> 

> ganz kompakt geht es aber auch so (RandomChoice ist nicht ganz das, was

> gewünscht ist...). 

> 

> c1 = Total [ RandomSample [ If [ # < .08, 0, 1] & /@ RandomReal [
{0, 1},

> 80], 13 ] ]

> 

> Beste Grüße

> Hans

> 





                                          

<<attachment: Simulation_1.nb>>

<<attachment: Szenario_1_beherrscht.nb>>

_______________________________________________
DMUG Deutschsprachiges Mathematica-Forum demug@XXXXXXX.ch
http://www.mathematica.ch/mailman/listinfo/demug
Archiv: http://www.mathematica.ch/archiv.html
Antworten:
Verweise:
Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

DMUG DMUG-Archiv, http://www.mathematica.ch/archiv.html