Wahrscheinlichkeitsfunktionen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
Goswin
User
Beiträge: 363
Registriert: Freitag 8. Dezember 2006, 11:47
Wohnort: Ulm-Böfingen
Kontaktdaten:

Kann es wahr sein, dass nirgendwo im WWW Funktionen programmiert sindt, welche die Wahrscheinlichkeiten bekannter Zufallsverteilungen liefern?
Ich finde stundenlang Funktionen, die Zufallszahlen erzeugen, aber nie eine für (kumulierte) Wahrscheinlichkeiten oder Dichtefunktionen, nicht einmal die in jedem Statistikbuch vorhandenen Tabelleneinträge sind vertreten.

Auf der Scipy-Seite bin ich schon gewesen, da finde ich auch nichts. Hat jemand anderswo so etwas gesehen?
sea-live
User
Beiträge: 440
Registriert: Montag 18. Februar 2008, 12:24
Wohnort: RP

was sagt den wiki dazu
http://de.wikipedia.org/wiki/Wahrschein ... _Statistik
was genau suchst du denn
Benutzeravatar
Goswin
User
Beiträge: 363
Registriert: Freitag 8. Dezember 2006, 11:47
Wohnort: Ulm-Böfingen
Kontaktdaten:

Wenn ihr das immer genau wissen wollt, mache ich euch doch nur noch mehr Arbeit!
Heute suche ich eine Funktion, die mir kumulierte Wahrscheinlichkeiten einer negativen Binomialverteilung (mit beliebigem Erwartungswert und Varianz) liefert. Für große Erwartungswerte strebt diese nach einer Normalverteilung, aber für Normalverteilungen habe ich ja auch nichts gefunden...
abgdf

Ich hab' keine Ahnung, wovon Du schreibst, aber ich bin sicher, wenn Du die Funktionen programmierst (vielleicht in einem "Statistik"-Modul ?) und als erster OpenSource ins www stellst, wären Dir sicher ein paar Mathematiker dankbar :wink:.

Gruß
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Goswin hat geschrieben:Kann es wahr sein, dass nirgendwo im WWW Funktionen programmiert sindt, welche die Wahrscheinlichkeiten bekannter Zufallsverteilungen liefern?
Naja, im random Modul gibt es doch einige - vielleicht nicht die, die Du jetzt suchst ;-)
sea-live
User
Beiträge: 440
Registriert: Montag 18. Februar 2008, 12:24
Wohnort: RP

Diese Frage würde ich mal ins Mathematik Forum Stellen
da kanste sicherlich mit glänzen !
und auch minimale richtungsvorgaben von Profesoren solten dann kommen.
die dann schlussendlich zu einem Wahrscheinlich unwarscheinlichen Programm Fuhren !
BlackJack

@Hyperion: Im `random`-Modul gibt es keine einzige solche Funktion. Goswin sucht keine Funktion die Zufallszahlen erzeugt, sondern welche die die Wahrscheinlichlkeitsverteilung berechnen.
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Benutzeravatar
Goswin
User
Beiträge: 363
Registriert: Freitag 8. Dezember 2006, 11:47
Wohnort: Ulm-Böfingen
Kontaktdaten:

@sea-live: Danke für den Hinweis, ich wusste garnicht dass es ein Mathematikforum überhaupt gab, meinst du den Matheplaneten Matroid? Inzwischen habe ich die Frage auch dort gestellt, bin gespannt, was dabei herauskommt.
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

@Goswin: Was ist mit sympy? Genügt dir das nicht?
Benutzeravatar
Goswin
User
Beiträge: 363
Registriert: Freitag 8. Dezember 2006, 11:47
Wohnort: Ulm-Böfingen
Kontaktdaten:

@numerix: Sympy könnte auch interessant sein, obwohl es derzeit nur Wahrscheinlichkeiten für die Gaussverteilung anbietet und es kein direktes Download für SuSE-Linux gibt. Ob ich für große Erwartungswerte auf die Gaussverteilung ausweichen soll oder nicht, das ist ja gerade ein impliziterTeil meiner Frage. Jedenfalls bin ich auch für diesen Hinweis dankbar.
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Goswin hat geschrieben:Auf der Scipy-Seite bin ich schon gewesen, da finde ich auch nichts. Hat jemand anderswo so etwas gesehen?
Du mußt ggf. auch in scipy reingucken:

Code: Alles auswählen

from scipy.stats import binom
binom.cdf dürfte sein, was Du suchst.

HTH,
Christian

PS sympy und simpycore sind Algebrasysteme. Zwar kann man damit sicher auch CDFs abbilden (wenn nicht, wird das auf Wunsch sicher schnell implementiert), aber wenn man damit weiterrechnen will, muß man ggf. doch wieder in die "Niederrungen der Numerik" abtauchen. ;-)
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Hier steht etwas zur Normalverteilung.
MfG
HWK
abgdf

Der Schönheit wegen hatte ich mal das geschrieben:

Code: Alles auswählen

#!/usr/bin/env python

import pygame, sys,os
import math
from pygame.locals import *
 
# Screen resolution:

RESX = 800
RESY = 600

pygame.display.init()

window = pygame.display.set_mode((RESX, RESY))

pygame.display.set_caption('Gauss') 
screen = pygame.display.get_surface() 

b = 0.3
ULIM = 100.
UDIV = 1.8

for u in range(0, int(ULIM), 1):
    # Some mathematical, Gaussian calculations:
    a = float(u) / (ULIM / UDIV)
    if u > ULIM / 2:
        a = UDIV - (float(u) / (ULIM / UDIV))
    m = u / 16.

    for x in range(50, RESX - 50):
        c = x / (RESX / 16.) - 5.
        y = a * math.exp(-b * (c - m) * (c - m))

        # down:
        y = RESY / 10 + (y * RESY / 1.5 + u * 3)

        # up:
        # y = RESY * 9 / 10 - (y * RESY / 1.5 + u * 3)

        pygame.draw.line(screen, (200,200,200), (x, y), (x, y), 1)

pygame.display.update() 
 
def input(events): 
   for event in events:
        if event.type == QUIT:
            sys.exit(0) 
        if event.dict.has_key('key') and event.dict['key'] == K_q:
            sys.exit(0) 
 
while True: 
   input(pygame.event.get())
Keine Ahnung, ob Du sowas in der Richtung meintest ...

Viele Grüße
Benutzeravatar
Goswin
User
Beiträge: 363
Registriert: Freitag 8. Dezember 2006, 11:47
Wohnort: Ulm-Böfingen
Kontaktdaten:

@HWK:
In der Tat, die Links sind sehr informativ. Ich habe den Algorithmus zur Normalverteilung zwar nicht getestet, aber das haben viele andere getan. Ich glaube, die Normalverteilung kann ich abhaken.

@CM:
Wie auf den scipy-Webseiten über die scipy-Packages bereits geschrieben steht: "unfortunately very few are currently documented". Unter anderem ist scipy.stat nicht auf den Webseiten dokumentiert. Ich habe die vielleicht dumme Angewohnheit, undokumentierten Code unbeachtet zu lassen. Wenn ich es herunterlade, kann ich am Code sehen was das Paket enthält?

@abgdf:
Ich kenne das Paket <pgame> nicht, habe also selber keine Ahnung :-), ob ich etwas in dieser Richtung suche. Ich wäre nicht auf die Idee gekommen, in einem Spielepaket zu suchen. Mit etwas Zeit versuche ich mal, das pygame herunterzuladen und dein Programm zu entziffern.
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Goswin hat geschrieben:@CM:
Wie auf den scipy-Webseiten über die scipy-Packages bereits geschrieben steht: "unfortunately very few are currently documented". Unter anderem ist scipy.stat nicht auf den Webseiten dokumentiert. Ich habe die vielleicht dumme Angewohnheit, undokumentierten Code unbeachtet zu lassen. Wenn ich es herunterlade, kann ich am Code sehen was das Paket enthält?
Natürlich:

Code: Alles auswählen

dir(namespace)
sagt Dir, was im Namespace so drinne ist. Im Übrigen kann ich Dir die scipy-Mailingliste ans Herz legen. Dort kannst Du bei spezifischen, mathematisch geprägten Fragen rund um Python (fast) sicher brauchbare Information erhalten - auch zu Aspekten neben scipy.

HTH
Christian
Benutzeravatar
Goswin
User
Beiträge: 363
Registriert: Freitag 8. Dezember 2006, 11:47
Wohnort: Ulm-Böfingen
Kontaktdaten:

@CM: Mach ich. Danke für die Info.
abgdf

@Goswin:
In meinem Beispiel oben hatte ich "Pygame" zum Zeichnen verwendet.
Für den Fall, daß Du "Pygame" nicht verwenden kannst, hab' ich's hier nochmal in Tkinter gemacht. Das geht dann mit den "included batteries":

Code: Alles auswählen

#!/usr/bin/env python

import math

import Tkinter
from Tkconstants import *
 
# Screen resolution:

RESX = 800
RESY = 600

class GaussWindow:

    def __init__(self):

        self.mw = Tkinter.Tk()
        self.mw.option_add("*font", ("Arial", 12, "normal"))
        self.mw.title("Gauss")
        self.mw.geometry("+90+45")

        self.cv = Tkinter.Canvas(self.mw,
                                 bg = "white",
                                 width = RESX,
                                 height = RESY)

        self.cv.pack()

        self.drawGauss()

        self.btn = Tkinter.Button(self.mw,
                                  text = "Ok",
                                  command = self.mw.destroy)

        self.btn.bind(sequence = "<Return>", func = self.bindFunc)
        self.btn.focus()

        self.btn.pack(side = RIGHT,
                      padx = 10,
                      pady = 10)

        self.mw.mainloop()


    def bindFunc(self, a):
        self.mw.destroy()


    def drawGauss(self):

        b = 0.3
        ULIM = 100.
        UDIV = 1.8

        for u in range(0, int(ULIM), 1):

            # Some mathematical, Gaussian calculations:

            a = float(u) / (ULIM / UDIV)

            if u > ULIM / 2:
                a = UDIV - (float(u) / (ULIM / UDIV))

            m = u / 16.

            for x in range(50, RESX - 50):

                c = x / (RESX / 16.) - 5.
                y = a * math.exp(-b * (c - m) * (c - m))

                # down:
                y = RESY / 10 + (y * RESY / 1.5 + u * 3)

                # up:
                # y = RESY * 9 / 10 - (y * RESY / 1.5 + u * 3)

                self.cv.create_line(x, y, x + 1, y + 1)

 
if __name__ == "__main__":
   app = GaussWindow()
Viele Grüße
Antworten