Italia
Fonte/ Codesnippets

Approximierung der Inversen des Standard-Normalverteilungsintegrals

 

p.specht

Statistiker lösen damit z.B. die Frage, wieviele Personen eigentlich befragt werden müssen, um ein bestimmtes Signifikanzniveau (= Sicherheits-Prozentsatz betreffend die Übertragbarkeit eines statistischen Stichproben-Ergebnisses auf die interessierende Grundgesamtheit) garantieren zu können. Vielleicht kann´s ja wer brauchen.
Windowtitle "Approximation der Inversen Funktion des Normalverteilungsintegrals "
' (D) Demo by P. Specht 07-2013, ohne jegliche Gewähr!
Windowstyle 1048:Cls:font 2
Declare p!

Repeat

    Print "\n Gewünschte symmetrische StandardNormal-\n verteilte Wahrscheinlichkeit [%]:?",
    input p!
    case %csrlin>24:cls
    p!=abs(p!)
    case p!>100:p!=100
    p!=p!/100
    Print " Ergebnis: ";format$("%g", SNormInv(p!) )
    print "-------------------------------------------------"

until 0

End

proc SNormInv :parameters p!

    '  Acklam's InverseCDF 'Inverse Normalverteilung
    '  Adapted for XProfan 11.2a from Peter Acklam's
    '  "An algorithm for computing the inverse normal cumulative distribution function"
    '  (https://home.online.no/~pjacklam/notes/invnorm/)
    '  by P. Specht (July 26th, 2013, adding conditional definition of constants)
    '  Coefficients for rational approximations (Padé?)
    declare q!,r!
    'Define break-points:
    var P_LOW!= 0.02425
    var P_HIGH!= 1 - P_LOW!

    If (p!>0) And (p!<P_LOW!)

        'Rational approximation for lower region.
        q!=Sqrt(-2*Lg(p!))
        var C1! = -0.0077848940024302926
        var C2! = -0.32239645804113648
        var C3! = -2.4007582771618381
        var C4! = -2.5497325393437338
        var C5! = 4.3746641414649678
        var C6! = 2.9381639826987831
        var D1! = 0.0077846957090414622
        var D2! = 0.32246712907003983
        var D3! = 2.445134137142996
        var D4! = 3.7544086619074162
        Return (((((C1!*q!+C2!)*q!+C3!)*q!+C4!)*q!+C5!)*q!+C6!)/ \
        ((((D1!*q!+D2!)*q!+D3!)*q!+D4!)*q!+1)

    ElseIf (p!>=P_LOW!) And (p!<=P_HIGH!)

        'Rational approximation for central region
        q!=p!-0.5
        r!=q!*q!
        var A1! = -39.696830286653757
        var A2! = 220.9460984245205
        var A3! = -275.92851044696869
        var A4! = 138.357751867269
        var A5! = -30.66479806614716
        var A6! = 2.5066282774592392
        var B1! = -54.476098798224058
        var B2! = 161.58583685804089
        var B3! = -155.69897985988661
        var B4! = 66.80131188771972
        var B5! = -13.280681552885721
        Return (((((A1!*r!+A2!)*r!+A3!)*r!+A4!)*r!+A5!)*r!+A6!)*q!/ \
        (((((B1!*r!+B2!)*r!+B3!)*r!+B4!)*r!+B5!)*r!+1)

    ElseIf (p!>P_HIGH!) And (p!<1)

        'Rational approximation for upper region
        q!=Sqrt(-2*Lg(1-p!))
        ' Definition wurde in den IF-Teil verlegt, daher hier doppelt definiert (sh. oben)
        var C1! = -0.0077848940024302926
        var C2! = -0.32239645804113648
        var C3! = -2.4007582771618381
        var C4! = -2.5497325393437338
        var C5! = 4.3746641414649678
        var C6! = 2.9381639826987831
        var D1! = 0.0077846957090414622
        var D2! = 0.32246712907003983
        var D3! = 2.445134137142996
        var D4! = 3.7544086619074162
        Return -1*(((((C1!*q!+C2!)*q!+C3!)*q!+C4!)*q!+C5!)*q!+C6!)/ \
        ((((D1!*q!+D2!)*q!+D3!)*q!+D4!)*q!+1)

    Else

        Print " ERROR: Argument Out Of Range! "
        beep
        sound 2000,200
        return val("-1e-37")

    EndIf

Endproc

 
XProfan 11
Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'...
09.05.2021  
 



Zum Quelltext


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

671 Views

Untitledvor 0 min.
Ernst21.07.2021
Uwe ''Pascal'' Niemeier13.06.2021
R.Schneider28.05.2021
Michael W.28.05.2021
Di più...

Themeninformationen

Dieses Thema hat 1 subscriber:

p.specht (1x)


Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie