| |
|
|
p.specht
| In der Statistik kann man bei kleinen Stückzahlen und Sample-Größen nicht mit der Gauss-schen Normalverteilung arbeiten, denn durch die "Diskretisierung" gelten hier andere Gesetzlichkeiten.
Wenn eine Packung mit 100 Schrauben 5 schlechte enthält, und ich entnehme 20: Wie wahrscheinlich ist es dann, daß in diesen 20 : Keine, eine, zwei, drei, vier oder alle fünf fehlerhaft sind? Hier hilft die Hypergeometrische Verteilung weiter, die aus der bekannten Formel "Gesuchte_Fälle / Überhaupt_gleichmögliche_Fälle" entwickelt wurde.
Anbei - ohne jede Gewähr - ein kleines Programm dazu. Es enthält noch keine Prüfung, ob die Eingabewerte sinnvoll sind; zum rumspielen reicht es aber.
WindowTitle "Hypergeometrische Verteilung"
WindowStyle 24:set("decimals",15):font 2
Window %maxx/10,0 - %maxx/2,%maxy-40
Proc BinCoeff :parameters N&,k&:var h!=1
'Pascalsches Dreieck: Binärkoeffizient = ´N circa k ´
whileloop k&,1,-1:h!=h!*(N&-&Loop+1)/&Loop
endwhile:return h!
EndProc
Proc HypGFormel :parameters N&,P!,s&,x&'P(x) = (p x)*(q s-x)/(N s)
Case p!<0:p!=abs(p!/100):Case (p!>=0) and (p!<1):P!=int(p!*N&)
Return BinCoeff(P!,x&)/BinCoeff(N&,s&) * BinCoeff(N&-P!,s&-x&)
EndProc
Proc Hyp0 :parameters N&,P!,s&'Startwert x=0 der Rekursionsformel
'P!=Stückzahl | Wenn p=0..1 Wahrscheinlichkeitsfaktor, wenn <0: Prozentanteil
'Wahrscheinlichkeit, in einem Sample s aus N Elementen mit P besonderen
'keines der besonderen Elemente zu finden
case p!<0:p!=abs(p!/100):Case (p!>=0) and (p!<1):P!=int(p!*N&)
var H!=1
var Q&=N&-P!
WhileLoop s&,1,-1
H!=H!*(Q&-&Loop+1)/(N&-&Loop+1)
Endwhile
Return H!
EndProc
Proc HypGNext :parameters N&,P!,s&,x&,f_lastx!'REKURSIONSFORMEL
Case p!<0:p!=abs(p!/100):Case (p!>=0) and (p!<1):P!=int(p!*N&)
case (x&<0) or (x&>s&):return 0
var Q&=N&-P!
return f_lastx!*(P!-x&)/(x&+1)*(s&-x&)/(Q&-(s&-x&)+1)
EndProc
'Main
Declare f!,Addf!,w$,N&,P!,s&,x&
Lup:
CLS
print "\n Anzahl Grundgesamtheit: ";:input w$:case w$>"":N&=val(w$)
if N&<1:N&=100:P!=5:s&=20:x&=0:CLS:print "\n TESTWERTE 100,5,20":goto "skip":endif
print " Anzahl Besondere Elem.: ";:input w$:case w$>"":P!=val(w$)
print " Sample-Dimensione: ";:input w$:case w$>"":s&=val(w$)
print " Besondere im Sample: ";:input w$:case w$>"":x&=val(w$)
Skip:
print "\n Verteilungsdichte"
Print " HyperGVtlg-Rekursionsformel: Check mit BinCoeff-Formel:\n"
Whileloop 0,P!
if &Loop : f!=HypGNext(N&,P!,s&,&Loop-1,f!)
else : f!=Hyp0(N&,P!,s&)
endif
Print " x =";&Loop;": P(x)= ";format$("%g",f!);
print tab(44);HypGFormel(N&,P!,s&,&Loop)
Endwhile
Waitinput
cls
print "\n Verteilungsfunktion dazu:\n"
Addf!=0
Whileloop 0,P!
if &Loop : f!=HypGNext(N&,P!,s&,&Loop-1,f!)
else : f!=Hyp0(N&,P!,s&)
endif
Addf!=Addf!+f!
Print " x_max = ";&Loop;": P(x<=";&Loop;")= ";format$("%g",Addf!)
Endwhile
waitinput
Goto "Lup"
|
|
|
| XProfan 11Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 30.05.2021 ▲ |
|
|
|