0

Perzentil berechnen

..ich beschäftige mit gerade mit statistischen Berechnungen für eine Datentabelle. Im Webinar Team gibt es dort ja eine Beispielvorlage (266). Leider finde ich hier keine Funktion zur Berechnung des Perzentils. Hat das schon mal jemand berechnet? Ich würde gerne ein Perzentil eingeben. z.B. 90, 80, 60, 40, 20 und in einem Funktionsfeld sollte dann die Berechnung vorgenommen werden.

8 Antworten

null
    • T_Bartzsch
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hast Du denn eine Formel für die Berechnung von Perzentilen?  Du musst ja glaube ich die Messwerte in eine aufsteigende Reihe bringen und brauchst dann gewisse Positionen in diesem "Array" von Messwerten... und dann sind es ja noch zwei Formeln - je nachdem ob es Ganzzahlen oder Kommawerte sind.... Ich schau mal ob man da was bauen kann. 

      • Pro BoutiquenFonds GmbH
      • Eichelfr
      • vor 2 Jahren
      • Gemeldet - anzeigen

      T. Bartzsch 

      Hallo Tobias,

      das ist die ninox-Formel aus der Statistik DB für den Median, der auch das 50. Perzentil (Prozentrang) ist. Nun müsste man eigentlich den Divisor (/2) je nach Wunsch anpassen. Habe den richtigen Kniff aber noch nicht gefunden...

       

      Frank

       

      function Median(x : Auswertung) do
          let myNumbers := sort(x.Daten.Zahl);
          if odd(cnt(myNumbers)) then
              item(myNumbers, floor(cnt(myNumbers) / 2))
          else
              (item(myNumbers, cnt(myNumbers) / 2) + item(myNumbers, cnt(myNumbers) / 2 - 1)) / 2
          end
      end

    • T_Bartzsch
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Kann man nicht statt "/2" einfach "*0.5" einsetzen? Dann hast du den 50. bei 0.5, den 60. bei 0.6 usw...

    • + Maßanzug statt Massenware +
    • RonaldP
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hi Eichelfr ,

    wenn ich dich richtig verstehe, möchtest Du eine Engabemöglichkeit haben, wo Du einen Wert eingeben kannst, um die Berechnung statt "/2" z.B. "/5" auszuführen?
    Meine Idee dazu wäre eine neue globale Funktion anzulegen (Damit Berechnungen mit der Original Median Funktion nicht mitgeändert werden):
    => Vorher im Formular der Tabelle Daten ein Zahlenfeld anlegen (in diesem Code 'Zahl 2')

    function MedianP(x : Auswertung) do
        let myNumbers := sort(x.Daten.Zahl);
        let PZ := number((select Daten).'Zahl 2');
        if odd(cnt(myNumbers)) then
            item(myNumbers, floor(cnt(myNumbers) / PZ))
        else
            (item(myNumbers, cnt(myNumbers) / PZ) + item(myNumbers, cnt(myNumbers) / PZ - 1)) / PZ
        end
    end
    

    Dann ändert sich der Divisor entsprechend der Zahl im Feld 'Zahl 2'.
    Ob die Berechnung richtig ist kann ich dir leider nicht sagen, da ich mit Statistik nix am Hut ab ;-)
    Hier noch 2 Screenshots für Testberechnungen von mir (auf Basis der 266-DB):

    Eine andere Variante wäre statt dem Zahlenfeld ein Auswahlfeld anzulegen und dort vorgegebene Zahlenwerte zu hinterlegen...

    Viel Erfolg
    Ronald

    • Pro BoutiquenFonds GmbH
    • Eichelfr
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo Ronald, vielen Dank für ein Input. Mir geht es tatsächlich auch um etwas fachliche Unterstützung. Ich habe mich jetzt aber entschieden, mal verschiedene Zahlenreihen durchzurechnen und mit anderen Statistikrechnern zu vergleichen. Wenn es passt, werde ich mich nochmal mit der finalen Version zurückmelden.....

    Frank

    • T_Bartzsch
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Ich habe es mal mit einem Perzentilrechner gegen gerechnet - mein Ansatz mit dem * 0,5 (für 50%) statt /2 in der obigen Formal funktioniert. Jetzt mache dir nur ein Zahlenfeld "Perzentil" wo du dann 0,75 für 75% oder 0,2 für 20% eintragen kannst und dann folgende Formel in ein FX Feld:

    let myNumbers := sort(Daten.Zahl);
    if odd(cnt(myNumbers)) then
    item(myNumbers, floor(cnt(myNumbers) * Perzentil))
    else
    (item(myNumbers, cnt(myNumbers) * Perzentil) + item(myNumbers, cnt(myNumbers) * Perzentil - 1)) * Perzentil
    end
    • Pro BoutiquenFonds GmbH
    • Eichelfr
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Super, danke für die Unterstützung - werde ich so umsetzen!

    Frank

    • Maurice
    • vor 2 Jahren
    • Gemeldet - anzeigen