WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Verteilung berechnen

 

Gast21
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 19.08.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.08.2014, 11:35     Titel: Verteilung berechnen
  Antworten mit Zitat      
Hallo,

ich habe mir vor einigen Tagen Matlab runtergeladen, da ich aus einem Datensatz, welchen ich in das Programm eingelesen habe, die passende Verteilung berechnen muss.

Leider bin ich etwas ratlos wie ich dies angehen soll und wäre über Hilfe sehr dankbar.

Liebe Grüße Wink
Private Nachricht senden Benutzer-Profile anzeigen


gast17

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.08.2014, 13:06     Titel:
  Antworten mit Zitat      
welche Struktur haben denn deine Daten und was meinst du genau mit Verteilung?
Bitte nähere Informationen, sonst ist es schwer dir zu helfen wenn du dein Problem so allgemein beschreibst
 
Gast21
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 19.08.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.08.2014, 13:47     Titel:
  Antworten mit Zitat      
Hallo gast17,

da ich die eigentlichen Daten noch nicht bekommen habe, habe ich erstmal mit einem Probedatensatz rumprobiert deshalb weiß ich leider noch nichts zu der Datenstruktur.

Mit Verteilung meine ich Verteilungstest, es sollte also am Ende rauskommen, welche Verteilungsfunktion der Datensatz entspricht (zB Normalverteilt, exponentiell usw.).

Danke für deine und weitere Hilfe!!
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 19.08.2014, 14:11     Titel:
  Antworten mit Zitat      
Hallo,

grundsätzlich sollte man schon eine Ahnung haben, wie die Daten verteilt sein könnten. Mit
Code:
lillietest
jbtest

kann auf Normalverteilung getestet werden.

Mit
Code:

kann eine Verteilung angepasst werden. Mit
Code:

kann überprüft werden, wie wahrscheinlich es ist, dass die Verteilung derartige Daten liefert (was ein Maß dafür ist, wie gut die Verteilung zu den Daten passt).

Wenn mehrere Verteilungen automatisiert verglichen werden sollen, bleibt nur jede nacheinander anzupassen und zu testen, wie gut sie jeweils sind.
Manuell kann man das mit
Code:

ansehen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast21
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 19.08.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.08.2014, 10:00     Titel:
  Antworten mit Zitat      
Hallo,

erstmal vielen Dank für die Antwort.

Ich habe den lillietest durchgeführt und bekam als Ergebnis 1. Nachdem ich fitdist der Normalverteilung angewendet habe, wurde mir mu und Sigma berechnet. Bei chi2gof erhielt ich als Ergebnis wieder eine 1.

Da ich herausfinden möchte, welche Verteilung am besten meinen Datensatz widerspiegelt, muss ich noch weitere Test durchführen und den Datensatz beispielsweise auf Exponentialverteilung, Poissonverteilung usw. testen.
Da ich noch sehr unerfahren mit dem Programm bin, gestaltet sich dies trotz Hilfefunktion jedoch noch schwierig. Embarassed

Es wäre toll, wenn mir jemand helfen könnte und das für mich in einfachen Worten erklären könnte!!

Vielen Dank und liebe Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.08.2014, 10:14     Titel:
  Antworten mit Zitat      
Hallo,

du musst die Verteilung zunächst mit fitdist anzupassen und dann chi2gof anzuwenden. Beispiele dafür sind in der Doku von chi2gof. Du brauchst wirklich nur kopieren, einfügen und anpassen, z.B. für die Weibull-Verteilung:

Code:
pd = fitdist(x,'Weibull');
[h, p] = chi2gof(x,'CDF',pd)


Ich würde noch die Optionen ctrs oder edges verwenden, um eine vernünftige Aufteilung in Säulen sicherzustellen. Ansonsten können die Ergebnisse stark verfälscht werden.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast21
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 19.08.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.08.2014, 14:49     Titel:
  Antworten mit Zitat      
Hallo,

ich habe das beispielsweise für die Exponentialverteilung angewendet. Als Ergebnis erhalte ich h=1, p=0. Damit kann ich aber leider nicht viel anfangen, ich weiß nur dass durch h=1 die Hypothese abgelehnt wird.

Da man bei mir wie gesagt bei den Grundlagen anfangen muss verstehe ich nichts von ctrs oder edges die ich verwenden muss..

Ich konnte nur rausfinden, dass meine Verteilung keiner Normalverteilung entspricht.

Wär super wenn jemand noch eine anfängergerechte Erklärung für mich hätte, wie ich herausfinde welcher Verteilung meine Daten unterliegen.

Liebe Grüße und Danke für eure Bemühungen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.08.2014, 20:25     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Als Ergebnis erhalte ich h=1, p=0. Damit kann ich aber leider nicht viel anfangen, ich weiß nur dass durch h=1 die Hypothese abgelehnt wird.

Das ist doch schon was. p = 0 bedeutet zudem, dass die Verteilung extrem schlecht passt. Also andere Verteilungen ausprobieren.

Ich kann nur empfehlen, die Dokumentation von chi2gof wirklich mal komplett durchzulesen. Dort wird u.a. erklärt, wie der chi2gof-Test arbeitet und welche Rolle dabei die Centers bzw. Edges spielen. Wie sie tatsächlich gewählt werden müssen, ist eher eine Frage der Statistik als von MATLAB.

Erklärungen dazu findest du z.B. hier:
http://www.itl.nist.gov/div898/handbook/eda/section3/eda35f.htm

Im übrigen: wenn keine parametrische Verteilung wirklich gut passt, dann kann man auch eine nichtparametrische anpassen. Die entsprechende Option von fitdist ist 'kernel'.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast21
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 19.08.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.08.2014, 11:48     Titel:
  Antworten mit Zitat      
Hallo,

danke für die Antwort. Ich konnte bereits Normal- und Exponentialverteilung ausschließen, da beidesmal für h=1 und p=0 rauskommt.
Auf Weibull kann ich nicht testen, da eine Fehlermeldung erscheint, ich denke dafür sind meine Daten nicht geeignet, da sie eine 0 enthalten.
Wo finde ich eine Liste mit weiteren Befehle, welche ich statt "weibull" in den Befehl einsetzen kann? (wie zB "normal", "exponential").

"Lognormal" funktioniert beispielsweise nicht.

Liebe Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 22.08.2014, 18:32     Titel:
  Antworten mit Zitat      
Hallo,

'Lognormal' sollte gehen. Was passiert, wenn du das versuchst?
Eine vollständige Liste der unterstützten Verteilungen findest du in der Dokumentation von fitdist, wenn du auf distname klickst.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast21
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 19.08.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.08.2014, 11:14     Titel:
  Antworten mit Zitat      
Hallo,

vielen Dank für die hilfreiche Antwort, mittlerweile komm ich der Sache schon viel näher.

Wenn ich Lognormal probiere (und auch bei mehreren anderen Verteilungen) zeigt es mir an "The data in X must be positive".
Meine Zahlen enthalten jedoch keine negativen Zahlen, könnte das Problem auch an der Zahl 0 liegen?

Bei der Beschreibung von chi2gof ist ein Beispiel für den Test der Poisson Verteilung aufgeführt. Ich habe es aber so getestet:

Code:
pd = fitdist(x,'Poisson');
[h, p] = chi2gof(x,'CDF',pd)
 


Außerdem beschäftige ich mich gerade mit der Frage bezüglich ctrs und edges.
Was muss ich diesbezüglich noch beachten?
Muss ich beispielsweise eingeben wenn ich meine Zahlen in x gespeichert habe:
Code:
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 23.08.2014, 11:19     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
könnte das Problem auch an der Zahl 0 liegen?

Ja, denn 0 ist nicht positiv.

Zitat:
Muss ich beispielsweise eingeben wenn ich meine Zahlen in x gespeichert habe:

Die Syntax ist richtig, aber sinnvoll ist das so nicht. Ctrs gibt die Mitten der (Histogramm-) Säulen an, für die die theoretische Größe mit der tatsächlichen verglichen werden soll. Es macht keinen Sinn, die Daten zugleich als Ctrs zu verwenden.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast21
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 19.08.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.08.2014, 11:32     Titel:
  Antworten mit Zitat      
Hallo,

dann reicht es also so wie ich es gemacht habe und brauche ctrs nicht mehr testen?

Und das mit der Poisson Verteilung passt auch oder?

Liebe Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 23.08.2014, 11:43     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
dann reicht es also so wie ich es gemacht habe

Ich kenne deine Daten nicht, kann das also nicht beurteilen.

Zitat:
brauche ctrs nicht mehr testen

Das ergibt für mich keinen Sinn.

Zur Bedeutung von ctrs bzw. edges siehe den Link, den ich dir bereits geschickt hatte:
Zitat:
This test is sensitive to the choice of bins. There is no optimal choice for the bin width (since the optimal bin width depends on the distribution). Most reasonable choices should produce similar, but not identical, results. For the chi-square approximation to be valid, the expected frequency should be at least 5. This test is not valid for small samples, and if some of the counts are less than five, you may need to combine some bins in the tails.

Mit anderen Worten: wenn die Bins nicht vernünftig gewählt sind, kommt u.U. Schwachsinn raus.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast21
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 19.08.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.08.2014, 14:41     Titel:
  Antworten mit Zitat      
Hallo,

wenn ich auf Normalverteilung teste kommt h=0, das wäre ja an sich gut aber bei p erscheint kein Wert sondern nur 'Not a Number'.

Code:
>> pd = fitdist(x,'Normal');
[h, p] = chi2gof(x,'CDF',pd)

h =

     0


p =

   NaN
 


Liebe Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.