我被赋予了这项任务,并感到沮丧。一位同事让我估算下图的和:
曲线实际上是累积分布,而x是某种度量。他很想知道当累积函数开始变得笔直并偏离笔直时,x上对应的值是多少。
我知道我们可以使用微分来找到某个点的斜率,但是我不太确定如何确定何时可以将该直线称为直线。任何对某些已经存在的方法/文学的微调将不胜感激。
如果您碰巧知道此类调查的任何相关软件包或示例,我也知道R。
非常感谢。
更新
多亏了Flounderer,我得以进一步扩展工作,建立框架并在这里和那里修改参数。为了学习,这里是我当前的代码和图形输出。
library(ESPRESSO)
x <- skew.rnorm(800, 150, 5, 3)
x <- sort(x)
meanX <- mean(x)
sdX <- sd(x)
stdX <- (x-meanX)/sdX
y <- pnorm(stdX)
par(mfrow=c(2,2), mai=c(1,1,0.3,0.3))
hist(x, col="#03718750", border="white", main="")
nq <- diff(y)/diff(x)
plot.ts(nq, col="#6dc03480")
log.nq <- log(nq)
low <- lowess(log.nq)
cutoff <- .7
q <- quantile(low$y, cutoff)
plot.ts(log.nq, col="#6dc03480")
abline(h=q, col="#348d9e")
x.lower <- x[min(which(low$y > q))]
x.upper <- x[max(which(low$y > q))]
plot(x,y,pch=16,col="#03718750", axes=F)
axis(side=1)
axis(side=2)
abline(v=c(x.lower, x.upper),col="red")
text(x.lower, 1.0, round(x.lower,0))
text(x.upper, 1.0, round(x.upper,0))
2
您能否尝试确定二阶导数是0还是接近0?
—
Alex
制定的问题可能是-很可能-不存在“笔直”的切口。如果您拿起一个坚固的镜头并检查该区域,您可能会注意到它仍然是光滑的S形。
—
ttnphns
@alex感谢您提供此技巧,我会袖手旁观,并给出一些想法和尝试。
—
2013年
如果要适合某个密度(例如,通过核密度估计,对数样条密度估计,甚至某种参数模型进行拟合),则其峰值处的密度高度就是CDF的最大斜率的估计。峰值的“宽度”告诉您有关x值的范围有多宽,以某种角度谈论该斜率就好像是恒定的一样。
—
Glen_b-恢复莫妮卡
要跟进@Glen_b的评论,主要要点是您所要求的没有足够严格地定义。应该将“凸肩” x_lower和x_upper定位在PDF最大值以下吗?需要一些定量标准。
—
ub