Ich habe den folgenden Datensatz: https://dl.dropbox.com/u/22681355/ORACLE.csv und möchte die täglichen Änderungen in "Öffnen" nach "Datum" darstellen, also habe ich Folgendes getan:
oracle <- read.csv(file="http://dl.dropbox.com/u/22681355/ORACLE.csv", header=TRUE)
plot(oracle$Date, oracle$Open, type="l")
und ich bekomme folgendes:
Dies ist offensichtlich nicht die schönste Darstellung aller Zeiten. Ich frage mich also, welche Methode für die Darstellung derart detaillierter Daten die richtige ist.
R
einer Weise ist es, glatte Linien hinzuzufügenloess
. Ich bin auf dem Weg nach draußen, aber versuche es mit Löss in R und wenn du Probleme hast, bearbeite deinen Beitrag und jemand wird dir sicherlich helfen können. Es gibt auch andere Glättungsmethoden, aber ich denke, Löss ist eine gute Standardeinstellung.Antworten:
Das Problem mit Ihren Daten ist nicht, dass sie extrem detailliert sind: Sie haben am Wochenende keine Werte, deshalb werden sie mit Lücken dargestellt. Es gibt zwei Möglichkeiten, damit umzugehen:
smooth.spline
,loess
usw.). Der Code der einfachen Interpolation ist unten. In diesem Fall führen Sie jedoch etwas "Unnatürliches" und Künstliches in die Daten ein. Deshalb bevorzuge ich die zweite Option.Hoffe es wird helfen.
quelle
plot(as.Date(oracle$Date), oracle$Open, type='l')
openValues <- c(openValues, mean(oracle$Open[i:i-1]))
in der ersten Methode durchopenValues <- c(openValues, NA)
Da das Problem in vielen statistischen Softwareumgebungen häufig vorkommt, wollen wir es hier auf Cross Validated diskutieren, anstatt es in ein R-spezifisches Forum (wie StackOverflow) zu migrieren.
Das eigentliche Problem ist, dass
Date
es als Faktor - eine diskrete Variable - behandelt wird und die Leitungen daher nicht richtig angeschlossen werden. (Auch werden die Punkte in horizontaler Richtung nicht perfekt genau dargestellt.)Um die rechte Darstellung zu erstellen, wurde das
Date
Feld von einem Faktor in ein tatsächliches Datum konvertiert, jede Woche wurde mit einer einfachen Berechnung identifiziert (wobei die Wochen zwischen Samstag und Sonntag unterbrochen wurden) und die Linien wurden an Wochenenden durch Schleifen über die Wochen unterbrochen:(Ein
oracle
Datumsäquivalent jeder Woche, das den Montag dieser Woche angibt , wurde ebenfalls im Datenrahmen gespeichert, da es zum Zeichnen wöchentlicher aggregierter Daten nützlich sein kann.)Die ursprüngliche Absicht kann einfach durch Emulieren der letzten Zeile erreicht werden, um alle Daten anzuzeigen. Um einige Informationen zum saisonalen Verhalten hinzuzufügen, variiert das folgende Diagramm die Farbe pro Woche in jedem Kalenderjahr:
quelle
Ich würde an den Wochenenden nicht interpolieren. Am Samstag werden nur sehr wenige Börsen gehandelt und am Sonntag keine, von denen ich weiß. Sie führen eine Schätzung für Daten ein, die es nie gab. Warum also nicht einfach Samstag und Sonntag aus dem Datensatz entfernen? Ich würde so etwas wie das Folgende tun:
quelle
In Bezug auf das Aussehen Ihres Diagramms würde sich das Hinzufügen mehrerer Beschriftungen unter der x-Achse optisch verbessern. Das Aussehen des vorgeschlagenen Grundstücks finden Sie hier http://imgur.com/ZTNPniA
Ich weiß nicht, wie ich eine solche Handlung machen soll, es ist nur eine Idee (die ich in R nicht realisiert habe)
quelle