我有一个数据集的散点图,我对计算数据的上限感兴趣。我不知道这是否是一种标准的统计方法,所以我正在考虑将 X 轴数据分成小范围,计算这些范围的最大值,然后尝试确定一个函数来描述这些点。 R中是否已经有一个函数可以做到这一点?
如果相关,则有 92611 点。
最佳答案
您可能想研究 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)
为了生成“拟合线”,我们从模型中预测
X
中的 100 个等距值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)
这应该给你这个:
关于r - 关于计算描述数据上限的函数的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4594370/