Mam następujący zestaw danych: https://dl.dropbox.com/u/22681355/ORACLE.csv i chciałbym zaplanować codzienne zmiany w „Otwarciu” według „Daty”, więc wykonałem następujące czynności:
oracle <- read.csv(file="http://dl.dropbox.com/u/22681355/ORACLE.csv", header=TRUE)
plot(oracle$Date, oracle$Open, type="l")
i otrzymuję następujące:
Teraz nie jest to oczywiście najładniejszy wykres, więc zastanawiam się, jaka jest właściwa metoda, aby użyć takich szczegółowych danych?
R
jednym ze sposobów, aby dodać gładkie linie jestloess
. Jestem w drodze do wyjścia, ale spróbuj? Less w R, a jeśli masz problemy, edytuj swój post, a ktoś na pewno będzie mógł ci pomóc. Istnieją również inne metody wygładzania, ale myślę, że less jest dobrym ustawieniem domyślnym.Odpowiedzi:
Problem z twoimi danymi nie polega na tym, że są one bardzo szczegółowe: w weekendy nie masz żadnych wartości, dlatego wykreślono je z przerwami. Istnieją dwa sposoby radzenia sobie z tym:
smooth.spline
,loess
etc.). Kod prostej interpolacji znajduje się poniżej. Ale w tym przypadku wprowadzisz do danych coś „nienaturalnego” i sztucznego. Dlatego wolę drugą opcję.Mam nadzieję, że to pomoże.
źródło
plot(as.Date(oracle$Date), oracle$Open, type='l')
openValues <- c(openValues, mean(oracle$Open[i:i-1]))
w pierwszej metodzie naopenValues <- c(openValues, NA)
Ponieważ problem jest wspólny dla wielu środowisk oprogramowania statystycznego, omówmy go tutaj na Cross Validated, a nie migrujemy go na forum specyficzne dla języka R (takiego jak StackOverflow).
Prawdziwym problemem jest to, że
Date
jest traktowany jako czynnik -A zmiennej dyskretnej - i tak linie nie są prawidłowo podłączone. (Punkty nie są drukowane idealnie dokładnie w kierunku poziomym.)Aby wykonać prawostronny wykres,
Date
pole zostało przekształcone ze współczynnika na rzeczywistą datę, każdy tydzień był identyfikowany za pomocą prostego obliczenia (przerywanie tygodni między sobotą a niedzielą), a linie były przerywane w weekendy przez zapętlanie w ciągu tygodni:(Odpowiednik daty każdego tygodnia, podając poniedziałek tego tygodnia, również został zapisany w
oracle
ramce danych, ponieważ może być przydatny do kreślenia tygodniowych danych zagregowanych).Pierwotny zamiar można osiągnąć po prostu przez emulację ostatniego wiersza w celu wyświetlenia wszystkich danych. Aby dodać informacje o sezonowym zachowaniu, poniższy wykres zmienia kolor w zależności od tygodnia w każdym roku kalendarzowym:
źródło
Nie interpolowałbym w weekendy. Bardzo niewiele giełd papierów wartościowych handluje w sobotę, a żadnej nie znam w niedzielę. Wprowadzasz oszacowanie danych, które nigdy nie istniały, więc dlaczego zamiast tego po prostu usunąć sobotę i niedzielę ze zbioru danych? Zrobiłbym coś takiego:
źródło
Jeśli chodzi o wygląd twojego wątku, przypuszczam, że dodanie wielu etykiet pod osią X poprawiłoby go wizualnie. Wygląd sugerowanej fabuły można zobaczyć tutaj http://imgur.com/ZTNPniA
Nie wiem, jak zrobić taką fabułę, to tylko pomysł (którego nie widziałem w R)
źródło