Die sortierten Daten seien . Betrachten Sie zum Verständnis der empirischen CDF G einen der Werte des x i - -Letters als γ - und nehmen Sie an, dass eine Zahl k des x vorliegtx1≤x2≤⋯≤xnGxiγk kleiner als γ sind und t ≥ 1 von x i gleich γ sind . Wählen Sie ein Intervall [ α , β ], in dem von allen möglichen Datenwerten nur γ giltxiγt≥1xiγ[α,β]γerscheint. Innerhalb dieses Intervalls hat dann definitionsgemäß den konstanten Wert k / n für Zahlen kleiner als γ und springt auf den konstanten Wert ( k + t ) / n für Zahlen größer als γ .Gk/nγ(k+t)/nγ
Betrachten Sie den Beitrag zu aus dem Intervall [ α ,∫b0xh(x)dx . Obwohl h nicht eine Funktion ist- es ist ein Punkt Maß der Größe t / n an γ --die Integral wirddefiniertdurch Integration von Teilen, umUmrechnung in eine ehrlichen-to-Güte integral. Machen wir das über das Intervall [ α , β ] :[α,β]ht/nγ[α,β]
∫βαxh(x)dx=(xG(x))|βα−∫βαG(x)dx=(βG(β)−αG(α))−∫βαG(x)dx.
Der neue Integrand ist integrierbar , obwohl er bei diskontinuierlich ist. Sein Wert kann leicht gefunden werden, indem die Integrationsdomäne in die Teile vor und nach dem Sprung in G aufgeteilt wird :γG
∫βαG(x)dx=∫γαG(α)dx+∫βγG(β)dx=(γ−α)G(α)+(β−γ)G(β).
Ersetzt man dies in das Vorstehende und erinnert man sich an ergibt sich G ( β ) = ( k + t ) / nG(α)=k/n,G(β)=(k+t)/n
∫βαxh(x)dx=(βG(β)−αG(α))−((γ−α)G(α)+(β−γ)G(β))=γtn.
Mit anderen Worten multipliziert dieses Integral die Position (entlang der Achse) jedes Sprungs mit der Größe dieses Sprungs. Die Größe des Sprungs istX
tn=1n+⋯+1n
mit einem Term für jeden der Datenwerte, der entspricht . Das Addieren der Beiträge von allen solchen Sprüngen von G zeigt dasγG
∫b0xh(x)dx=∑i:0≤xi≤b(xi1n)=1n∑xi≤bxi.
1/n[0,b]1/n1/mm[0,b]
kb1n∑xi≤bxi=k.kj
1n∑i=1j−1xi≤k<1n∑i=1jxi,
you will have narrowed b to the interval [xj−1,xj). You can do no better than that using the ECDF. (By fitting some continuous distribution to the ECDF you can interpolate to find an exact value of b, but its accuracy will depend on the accuracy of the fit.)
R
performs the partial sum calculation with cumsum
and finds where it crosses any specified value using the which
family of searches, as in:
set.seed(17)
k <- 0.1
var1 <- round(rgamma(10, 1), 2)
x <- sort(var1)
x.partial <- cumsum(x) / length(x)
i <- which.max(x.partial > k)
cat("Upper limit lies between", x[i-1], "and", x[i])
The output in this example of data drawn iid from an Exponential distribution is
Upper limit lies between 0.39 and 0.57
The true value, solving 0.1=∫b0xexp(−x)dx, is 0.531812. Its closeness to the reported results suggests this code is accurate and correct. (Simulations with much larger datasets continue to support this conclusion).
Here is a plot of the empirical CDF G for these data, with the estimated values of the upper limit shown as vertical dashed gray lines: