Wie von Henry bemerkt , gehen Sie von einer Normalverteilung aus und es ist vollkommen in Ordnung, wenn Ihre Daten einer Normalverteilung folgen. Sie sind jedoch falsch, wenn Sie keine Normalverteilung für sie annehmen können. Im Folgenden beschreibe ich zwei verschiedene Ansätze, die Sie für eine unbekannte Verteilung verwenden können, wenn Sie nur Datenpunkte x
und zugehörige Dichteschätzungen angeben px
.
Als Erstes müssen Sie überlegen, was genau Sie mithilfe Ihrer Intervalle zusammenfassen möchten. Sie könnten beispielsweise an Intervallen interessiert sein, die mit Quantilen erhalten wurden, aber Sie könnten auch an Regionen mit der höchsten Dichte (siehe hier oder hier ) Ihrer Verteilung interessiert sein . Während dies in einfachen Fällen wie symmetrischen, unimodalen Verteilungen nicht viel (wenn überhaupt) ausmachen sollte, wird dies einen Unterschied für "kompliziertere" Verteilungen ausmachen. Im Allgemeinen erhalten Sie durch Quantile ein Intervall mit einer Wahrscheinlichkeitsmasse, die um den Median (die mittleren Ihrer Verteilung) konzentriert ist, während der Bereich mit der höchsten Dichte ein Bereich um die Moden ist100 α %der Verteilung. Dies wird klarer, wenn Sie die beiden Darstellungen auf dem Bild unten vergleichen: Quantile "schneiden" die Verteilung vertikal, während der Bereich mit der höchsten Dichte sie horizontal "schneidet".
Als Nächstes sollten Sie sich überlegen, wie Sie mit der Tatsache umgehen sollen, dass Sie unvollständige Informationen über die Verteilung haben (vorausgesetzt, dass es sich um eine kontinuierliche Verteilung handelt, haben Sie nur eine Reihe von Punkten und keine Funktion). Was Sie dagegen tun können, ist, die Werte "wie sie sind" zu übernehmen oder eine Art Interpolation oder Glättung zu verwenden, um die "Zwischen" -Werte zu erhalten.
Ein Ansatz wäre die Verwendung einer linearen Interpolation (siehe ?approxfun
in R) oder alternativ etwas Glatteres wie Splines (siehe ?splinefun
in R). Wenn Sie sich für einen solchen Ansatz entscheiden, müssen Sie berücksichtigen, dass Interpolationsalgorithmen keine Domänenkenntnisse über Ihre Daten haben und ungültige Ergebnisse wie Werte unter Null usw. zurückgeben können.
# grid of points
xx <- seq(min(x), max(x), by = 0.001)
# interpolate function from the sample
fx <- splinefun(x, px) # interpolating function
pxx <- pmax(0, fx(xx)) # normalize so prob >0
Der zweite Ansatz, den Sie in Betracht ziehen könnten, ist die Verwendung der Verteilung der Kerndichte / -mischung, um Ihre Verteilung anhand der von Ihnen zur Verfügung gestellten Daten zu approximieren. Das Knifflige dabei ist, sich für eine optimale Bandbreite zu entscheiden.
# density of kernel density/mixture distribution
dmix <- function(x, m, s, w) {
k <- length(m)
rowSums(vapply(1:k, function(j) w[j]*dnorm(x, m[j], s[j]), numeric(length(x))))
}
# approximate function using kernel density/mixture distribution
pxx <- dmix(xx, x, rep(0.4, length.out = length(x)), px) # bandwidth 0.4 chosen arbitrary
Als nächstes werden Sie die Intervalle von Interesse finden. Sie können entweder numerisch oder durch Simulation vorgehen.
1a) Abtastung, um Quantilintervalle zu erhalten
# sample from the "empirical" distribution
samp <- sample(xx, 1e5, replace = TRUE, prob = pxx)
# or sample from kernel density
idx <- sample.int(length(x), 1e5, replace = TRUE, prob = px)
samp <- rnorm(1e5, x[idx], 0.4) # this is arbitrary sd
# and take sample quantiles
quantile(samp, c(0.05, 0.975))
1b) Abtasten, um den Bereich mit der höchsten Dichte zu erhalten
samp <- sample(pxx, 1e5, replace = TRUE, prob = pxx) # sample probabilities
crit <- quantile(samp, 0.05) # boundary for the lower 5% of probability mass
# values from the 95% highest density region
xx[pxx >= crit]
2a) Finden Sie Quantile numerisch
cpxx <- cumsum(pxx) / sum(pxx)
xx[which(cpxx >= 0.025)[1]] # lower boundary
xx[which(cpxx >= 0.975)[1]-1] # upper boundary
2b) Ermitteln Sie den Bereich mit der höchsten Dichte numerisch
const <- sum(pxx)
spxx <- sort(pxx, decreasing = TRUE) / const
crit <- spxx[which(cumsum(spxx) >= 0.95)[1]] * const
Wie Sie in den folgenden Diagrammen sehen können, geben beide Methoden bei einer unimodalen, symmetrischen Verteilung dasselbe Intervall zurück.
100 α %Pr ( X∈ μ ± ζ) ≥ αζ