График плотности периодической функции - PullRequest
3 голосов
/ 30 сентября 2011

У меня есть вектор, который представляет время (в секундах после полуночи), когда произошла куча событий, и я хочу построить график плотности этих событий в течение дня. Вот один из способов сделать это:

rs <- 60*60*24*c(rbeta(5000, 2, 5), runif(10000, 0, 1))
den <- density(rs, cut=0)
plot(den, ylim=range(0,den$y))

Проблема в том, что он получает неправильную плотность конечной точки, потому что это циклическая функция. Если вы построите 3 периода подряд, вы увидите истинную плотность в среднем периоде:

den <- density(c(rs, rs+60*60*24, rs+2*60*60*24), cut=0)
plot(den, ylim=range(0,den$y))

Мой вопрос заключается в том, есть ли какой-нибудь [лучший] способ получить плотность этого среднего куска из исходных данных, не увеличивая количество наблюдений, как я, в три раза. Я, конечно, должен указать длину периода, если нет никаких наблюдений вблизи конечных точек.

1 Ответ

0 голосов
/ 01 октября 2011

Я не думаю, что ваши доказательства того, что кривая должна выглядеть как линия, повторяющаяся сплайновая подгонка, являются убедительными.Вы должны изучить результаты Hist () на том же объекте, где вы указываете разрывы на часовых границах.Функция logspline позволяет рассчитывать оценки плотности с указанными границами на данных:

hist( c(c(rs, rs+60*60*24, rs+2*60*60*24), breaks= 24*3 )
require(logspline)
?logspline
fit <- logspline(c(rs), lbound=0, ubound=60*60*24)
plot(fit)

Лучше подходит, потому что она правильно отражает тот факт, что плотность на конец дня ниже, чем первая издень, который не совсем правильно запечатлен на графике плотности за три дня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...