Ich sehe mir an, wie sich der erwartete minimale euklidische Abstand zwischen zufällig einheitlichen Punkten und dem Ursprung ändert, wenn wir die Dichte zufälliger Punkte ( Punkte pro Quadrateinheit ) um den Ursprung erhöhen . Ich habe es geschafft, eine Beziehung zwischen den beiden als solche zu finden:
Ich kam darauf, indem ich einige Monte-Carlo-Simulationen in R ausführte und eine Kurve manuell anpasste (Code unten).
Meine Frage ist : Hätte ich dieses Ergebnis eher theoretisch als experimentell ableiten können?
#Stack Overflow example
library(magrittr)
library(ggplot2)
#---------
#FUNCTIONS
#---------
#gen random points within a given radius and given density
gen_circle_points <- function(radius, density) {
#round radius up then generate points in square with side length = 2*radius
c_radius <- ceiling(radius)
coords <- data.frame(
x = runif((2 * c_radius) ^ 2 * density, -c_radius, c_radius),
y = runif((2 * c_radius) ^ 2 * density, -c_radius, c_radius)
)
return(coords[sqrt(coords$x ^ 2 + coords$y ^ 2) <= radius, ])#filter in circle
}
#Example plot
plot(gen_circle_points(radius = 1,density = 200)) #200 points around origin
points(0,0, col="red",pch=19) #colour origin
#return euclidean distances of points generated by gen_circle_points()
calculate_distances <- function(circle_points) {
return(sqrt(circle_points$x ^ 2 + circle_points$y ^ 2))
}
#find the smallest distance from output of calculate_distances()
calculate_min_value <- function(distances) {
return(min(distances))
}
#Try a range of values
density_values <- c(1:100)
expected_min_from_density <- sapply(density_values, function(density) {
#simulate each density value 1000 times and take an average as estimate for
#expected minimum distance
sapply(1:1000, function(i) {
gen_circle_points(radius=1, density=density) %>%
calculate_distances() %>%
calculate_min_value()
}) %>% mean()
})
results <- data.frame(density_values, expected_min_from_density)
#fit based off exploration
theoretical_fit <- data.frame(density = density_values,
fit = 1 / (sqrt(density_values) * 2))
#plot monte carlo (black) and fit (red dashed)
ggplot(results, aes(x = density_values, y = expected_min_from_density)) +
geom_line() +
geom_line(
data = theoretical_fit,
aes(x = density, y = fit),
color = "red",
linetype = 2
)
r
expected-value
monte-carlo
uniform
minimum
Michael Bird
quelle
quelle
Antworten:
Betrachten Sie den Abstand zum Ursprung von unabhängig verteilten Zufallsvariablen , die gleichmäßige Verteilungen auf dem Quadrat( X i , Y i ) [ - 1 , 1 ] 2 .n (Xi,Yi) [−1,1]2.
Wenn für den quadratischen Abstand , zeigt uns die euklidische Geometrie, dassR2i=X2i+Y2i
während (mit etwas mehr Arbeit)
Zusammen bestimmen diese die Verteilungsfunktion , die allenR i .F Ri.
Da die Punkte unabhängig sind, sind auch die Abstände unabhängig, woher die Überlebensfunktion von stammtR i , min ( R i )n Ri, min(Ri)
impliziert die mittlere kürzeste Entfernung ist
Für fast die gesamte Fläche in diesem Integral nahe bei daher können wir sie als annähernn≫1, 0 ,
Der Fehler ist nicht größer als der Teil des Integrals, der weggelassen wurde, was wiederum nicht größer als ist
was offensichtlich exponentiell mit abnimmtn .
Wir können uns wiederum dem Integranden als annähern
Bis zu einer Normalisierungskonstante ist dies die Dichtefunktion einer Normalverteilung mit Mittelwert und Varianz Die fehlende Normalisierungskonstante ist0 σ2=2/(nπ).
Erweitern des Integrals von auf (wodurch ein Fehler proportional zu ),1 ∞ e−n
Bei der Erlangung dieser Näherung wurden drei Fehler gemacht. Zusammen sind sie höchstens in der Größenordnung dem Fehler, der bei der Approximation von durch den Gaußschen auftritt.n−1, Sn(r)
Diese Figur zeigt das fache der Differenz zwischen dem fachen und dem -fachen der mittleren kürzesten Entfernung, die in separaten simulierten Datensätzen für jedes Da sie mit zunehmendem abnehmen , ist dies ein Beweis dafür, dass der Fehlern 1 n−−√ 105 n. n o(n−1/n−−√)=o(n−3/2).
Schließlich ergibt sich der Faktor in der Frage aus der Größe des Quadrats:1/2 Die Dichte ist die Anzahl der Punkte pro Flächeneinheit, und das Quadrat hat die Fläche , wohern, [−1,1]2 4
Dies ist der
R
Code für die Simulation:quelle