R Dataplot wird falsch angezeigt?
Guten Morgen,
ich möchte mir mit R eine Visualisierung von 100.000 Datensätzen erstellen lassen, aber leider ist der Plot, den R erzeugt, falsch. Er kann so nicht aussehen. Der Code:
termData <- read.csv("terms2-64-to100k.csv", sep=",")
plot(termData$n, termData$term, type="l", xlab="n", ylab="Z(n)")
Hier der Plot, den R mir liefert:
Bis zum 10.000. Datensatz bin ich mit Excel ganz gut hingekommen und es ist auch ganz gut erkennbar, wohin der Graph strebt:
Aber R macht ziemlichen Kokolores. Die Datensätze steigen recht monoton - zwar immer wieder mit kleinen Ausreißern, aber im Großen und ganzen wird Z(n) größer, je größer n wird. Das sieht man im Excel-Diagramm auch ganz gut, aber mit 100.000 Datensätzen kommt Excel leider auch an seine Grenzen.
Dass R mir allerdings für die 100.000 Datensätze ein komplett anderes Diagramm liefert, ist seltsam. Importiere ich nur 10.000 Datensätze, sind die Diagramme gleich, nur ab 100.000 gibt R mir nicht mehr das richtige Diagramm aus. Woran kann das liegen? Gibt es eine bessere Funktion zum Plotten größerer Datensätze?
LG
PS: Falls der Datensatz von Interesse ist: http://daten-transport.de/?id=JdqdfELXtfxm
2 Antworten
hallo,
wie kommt es zu solchen ausreissern? schonmal die ursache nachgeforscht ausser zuviele datensätze..warum muss er immer alle datensätze jedesmal abarbeiten anstatt nur die die dazugekommen sind?
Ich selbst habe auch einen Plotter (gnuplot), der mir aus einer Text-datei die Kurve macht..ich hatte auch so ähnliche "Probleme"..und zwar habe ich Temperatursensoren abgefragt zu einer bestimmten zeit (alle 5min) von einem bash-script..da hab ich eine prüffunktion eingebaut wie CRC-Prüfung und dazu Falsch daten von der Quelle verglichen mit vorherigen werten..wenn diese von jetzt auf gleich bestimmte werte über/unterschreiten, wird ein alter gültiger wert als ersatz genommen und geschrieben ..so hab ich solche sägezahnmuster auch weggebügelt gekriegt..sowas ähnliches ist sicher in deiner funktion oder applikation möglich?
in einer prüffunktion um falsch-werte zu eliminieren, damit der plotter diese auch nicht einzeichnet..man kann es auch anders gestalten wie komplett weglassen oderso..bei meinem fall konnte ich alte werte nehmen..die nur 5min alt waren..
Achso. Wie gesagt, meine Datensätze sind bereits validiert und definitiv nicht so, wie R es visualisiert. Es gibt keine Nullwerte außer dem allerersten - im Diagramm allerdings schon. Das Diagramm ist falsch. Das ist das Problem. ;-)
Meine spontane Fehlerdiagnose ist ein Fehler in der Datenquelle, denn einige y Werte sind null und so kommt das Sägezahnmuster beim RPlot zustande.. Wie wurden denn die Daten erfasst? Ich kann leider kein R, aber ich würde mal das Datenmaterial einmal validieren, also eine Prüffunktion schreiben, die jeden Datensatz nach bestimmten Kriterien checkt. Ein bequemer Einzeiler zum Importieren wäre mir zu wenig.
Die Daten habe ich mir ja selbst erzeugt und sind dementsprechend auch so, wie ich sie haben möchte. Kein Datensatz enthält eine Null, außer der allererste (1 - 0). Wie schon geschrieben, oben ist ja das Excel-Diagramm für Werte bis 10.000. Ähnlich müsste es auch bis 100.000 weitergehen, aber definitiv nicht so, wie R es mir zeigt. Seltsam ist auch, dass R mir die ersten 10.000 Datensätze korrekt plottet - lese ich allerdings 100.000 ein, wird es falsch.
Und wie sieht es mit dem Wertebereich aus. 65.535 ist ja eine Bereichsgrenze eines unsigned 16 Bit und dieser Wert liegt doch zwischen 10.000 und 100.000. Könnte das eine Ursache sein?
Jetzt dachte ich mir kurz "Das ist es", aber leider nicht. Habe nochmal nachgelesen, Integer belegen auch in R 32 Bit. Mist.
Es war nur ein Rutsch - die Datensätze sind aus einem Programmdurchlauf. Den zweiten Teil deiner Antwort verstehe ich nicht. Warum sollte R "alte Werte" nehmen?