On m'a confié cette tâche et j'ai été perplexe. Un collègue m'a demandé d'estimer le et le x l o w e r du graphique suivant:
La courbe est en fait une distribution cumulative, et x est une sorte de mesure. Il souhaite savoir quelles sont les valeurs correspondantes sur x lorsque la fonction cumulative a commencé à devenir droite et à s'écarter de la droite.
Je comprends que nous pouvons utiliser la différenciation pour trouver la pente en un point, mais je ne sais pas trop comment déterminer quand pouvons-nous appeler la ligne droite. Tout coup de pouce vers une approche / littérature déjà existante sera grandement apprécié.
Je connais R aussi si vous connaissez des packages ou des exemples pertinents sur ce type d'enquêtes.
Merci beaucoup.
MISE À JOUR
Grâce à Flounderer, j'ai pu étendre davantage le travail, mettre en place un framework et bricoler les paramètres ici et là. À des fins d'apprentissage, voici mon code actuel et une sortie graphique.
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))
la source
Réponses:
Voici une idée rapide et sale basée sur la suggestion de @ alex.
Cela ressemble un peu à vos données. L'idée est maintenant de regarder le dérivé et d'essayer de voir où il est le plus important. Cela devrait être la partie de votre courbe où elle est la plus droite, car il s'agit d'une forme en S.
cutoff
la source