Советы по вычислению функции для описания верхней границы данных - PullRequest
4 голосов
/ 04 января 2011

У меня есть точечная диаграмма набора данных, и я заинтересован в расчете верхней границы данных.Я не знаю, является ли это стандартным статистическим подходом, поэтому я собирался разбить данные по оси X на небольшие диапазоны, рассчитать максимум для этих диапазонов и затем попытаться определить функцию для описания этих точек.В R уже есть функция для этого?

Если это уместно, есть 92611 баллов.

alt text

Ответы [ 2 ]

10 голосов
/ 04 января 2011

Возможно, вы захотите взглянуть на квантильную регрессию, которая доступна в пакете quantreg .Будет ли это полезно, будет зависеть от того, хотите ли вы, чтобы абсолютный максимум в ваших «окнах» был приемлемым для некоторого экстремального квантиля, скажем, 95-го или 99-го?Если вы не знакомы с квантильной регрессией, рассмотрите линейную регрессию, которая соответствует модели для ожидания или среднего отклика, обусловленной ковариатами модели.Квантильная регрессия для среднего квантиля (0,5) соответствовала бы модели срединному отклику, зависящему от ковариат модели.

Вот пример использования пакета quantreg , чтобы показать вам, что яимею в виду.Сначала создайте несколько фиктивных данных, аналогичных тем, которые вы показываете:

set.seed(1)
N <- 5000
DF <- data.frame(Y = rev(sort(rlnorm(N, -0.9))) + rnorm(N),
                 X = seq_len(N))
plot(Y ~ X, data = DF)

Затем установите модель на 99-й процентиль (или квантиль 0,99):

mod <- rq(Y ~ log(X), data = DF, tau = .99)

Для генерации«подогнанная линия», мы прогнозируем на основе модели 100 равных интервалов значений в X

pDF <- data.frame(X = seq(1, 5000, length = 100))
pDF <- within(pDF, Y <- predict(mod, newdata = pDF))

и добавим подобранную модель к графику:

lines(Y ~ X, data = pDF, col = "red", lwd = 2)

Это должно дать вамэто:

quantile regression output

3 голосов
/ 04 января 2011

Я бы поддержал кандидатуру Гэвина за использование квантильной регрессии. Ваши данные могут быть смоделированы с вашими X и Y, каждый лог нормально распределен. Вы можете увидеть, как выглядит график совместного распределения двух независимых (без навязанной корреляции, но не обязательно cor (x, y) == 0) логарифмических нормальных переменных, если вы запустите:

x <- rlnorm(1000, log(300), sdlog=1)
y<- rlnorm(1000, log(7), sdlog=1)
plot(x,y, cex=0.3)

alt text

Вы можете рассмотреть их отдельные распределения с помощью qqplot (в базовых функциях построения графиков), помня, что хвосты таких распределений могут вести себя удивительным образом. Вы должны быть более заинтересованы в том, насколько хорошо основная часть значений соответствует определенному распределению, а не крайним значениям ... если, конечно, ваши приложения не относятся к финансам или страхованию. Не хотите другого мирового финансового кризиса из-за плохих модельных предположений о поведении хвоста, не так ли?

qqplot(x, rlnorm(10000, log(300), sdlog=1) )
...