У меня есть следующий набор данных: https://dl.dropbox.com/u/22681355/ORACLE.csv и я хотел бы отобразить ежедневные изменения в «Open» по «Date», поэтому я сделал следующее:
oracle <- read.csv(file="http://dl.dropbox.com/u/22681355/ORACLE.csv", header=TRUE)
plot(oracle$Date, oracle$Open, type="l")
и я получаю следующее:
Теперь это, очевидно, не самый хороший сюжет за всю историю, поэтому мне интересно, какой правильный метод использовать для построения таких подробных данных?
R
один из способов добавить плавные линии являетсяloess
. Я уже ухожу, но попробуйте «loess in R» и, если у вас возникнут проблемы, отредактируйте свой пост, и кто-то наверняка сможет вам помочь. Есть и другие методы сглаживания, но я думаю, что loess - хороший вариант по умолчанию.Ответы:
Проблема с вашими данными не в том, что они очень подробные: у вас нет значений в выходные дни, поэтому они отображаются с пробелами. Есть два способа справиться с этим:
smooth.spline
,loess
и т. Д.). Код простой интерполяции приведен ниже. Но в этом случае вы привнесете в данные что-то «неестественное» и искусственное. Вот почему я предпочитаю второй вариант.Надеюсь, это поможет.
источник
plot(as.Date(oracle$Date), oracle$Open, type='l')
openValues <- c(openValues, mean(oracle$Open[i:i-1]))
в первом методе наopenValues <- c(openValues, NA)
Поскольку эта проблема является общей для многих статистических программных сред, давайте обсудим ее здесь, посвященную перекрестной проверке, а не переносим ее на специализированный форум R (например, StackOverflow).
Реальная проблема в том , что
Date
рассматривается как фактор --a дискретной переменной - и поэтому линии не подключены должным образом. (И при этом точки не отображаются совершенно точно в горизонтальном направлении.)Чтобы составить правый график,
Date
поле было преобразовано из фактора в фактическую дату, каждая неделя была идентифицирована с помощью простого вычисления (с разбивкой недель между субботой и воскресеньем), а линии были прерваны в выходные дни с циклическим изменением недель:(Экран, эквивалентный каждой неделе, с указанием понедельника этой недели, также был сохранен в
oracle
кадре данных, поскольку он может быть полезен для построения еженедельных агрегированных данных.)Исходное намерение может быть достигнуто простым эмуляцией последней строки для отображения всех данных. Чтобы добавить некоторую информацию о сезонном поведении, следующий график меняет цвет по неделям в течение каждого календарного года:
источник
Я не буду интерполировать на выходных. Очень немногие биржи торгуют в субботу, и ни одна, о которой я знаю в воскресенье. Вы вводите оценку для данных, которых никогда не было, так почему бы просто не удалить субботу и воскресенье из набора данных? Я хотел бы сделать что-то вроде ниже:
источник
Что касается внешнего вида вашего графика, я полагаю, что добавление нескольких меток под осью X визуально улучшит его. Внешний вид предлагаемого сюжета вы можете увидеть здесь http://imgur.com/ZTNPniA
Я не знаю, как сделать такой сюжет, это просто идея (которую я не видел реализованной в R)
источник