关于计算描述数据上限的函数的建议

时间:2011-01-04 13:54:41

标签: r statistics regression

我有一个数据集的散点图,我有兴趣计算数据的上限。我不知道这是否是一种标准的统计方法,所以我正在考虑的是将X轴数据分成小范围,计算这些范围的最大值,然后尝试识别描述这些点的函数。 R中是否已经有一个功能来执行此操作?

如果相关则有92611分。

alt text

2 个答案:

答案 0 :(得分:10)

您可能希望查看分位数回归,该回归可在 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)

这应该给你这个:

quantile regression output

答案 1 :(得分:3)

我将使用分位数回归第二次加文的提名。您的数据可能会使用您的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) )