μ무λμ΄ κΈΈμ λ°λΌ κ°κ³ μΆμ΄νλ κ²½μ°μ λλΉ νμ¬μ΄ μ§λ¬Έ μμ μμ΅λλ€ .
κΈ°λ³Έμ μΌλ‘ λλ κ° κ°μ²΄μ μ£Όμ΄μ§ μμ μΈ‘μ κ°μ΄ λΆμ΄μλ N κ°μ κ°μ²΄ λ‘ κ΅¬μ±λ λ°μ΄ν° μΈνΈ μ κ°μ§κ³ μμ΅λλ€ (μ΄ κ²½μ° 2 κ°).
Ξ©N
Iλ νλ₯ μ κ²°μ νλ λ°©λ²μ΄ νμ μλ‘μ΄ μ€λΈμ νΈ μ μνλ Ξ© Iλ νλ₯ λ°λ μλ μ§λ¬Έμ μλ’° κ·Έλμ F λ΄κ° μ΄λ―Έ νλ¨ μ»€λ λ°λ μΆμ κΈ° ν΅ν΄μ .
p[xp,yp]Ξ©
f^
μ λͺ©νλμ΄ μλ‘μ΄ μ€λΈμ νΈμ νλ₯ (νλνκΈ° λλ¬Έμ μ€μ μ΄ 2D λ°μ΄ν°μ μνλ) Ξ©μ , Iλ PDFλ‘ ν΅ν© λ€μλ€ Fλ₯Ό βμμ μ§μ§μ²΄μ κ°λλ λ°λ β κ΄μ°° ν κ²λ³΄λ€ μ μ΅λλ€ β. μ βκ΄μ°°βλ°λκ° fλ₯Ό μλ‘μ΄ κ°μ²΄ νκ° (P) , μ¦ : F ( Xμ P , Y , P ) . λ°λΌμ λ°©μ μμ νμ΄μΌν©λλ€.
p[xp,yp]Ξ©
f^
f^
p
f^(xp,yp)
λ΄ 2D λ°μ΄ν° μΈνΈ (pythonμ stats.gaussian_kde λͺ¨λμ ν΅ν΄ μ»μ)μ PDFλ λ€μκ³Ό κ°μ΅λλ€.
μ¬κΈ°μ λΉ¨κ° μ μ λ΄ λ°μ΄ν° μΈνΈμ PDF μμ κ·Έλ €μ§ μ κ°μ²΄ λνλ λλ€ .
p[xp,yp]κ·Έλμ μ§λ¬Έμ : pdfκ° κ·Έλ κ² λ³΄μΌ λ νκ³ λν΄ μμ μ λΆμ μ΄λ»κ² κ³μ°ν μ μμ΅λκΉ?
x,y:f^(x,y)<f^(xp,yp)λνλ€
μ견 μ€ νλμμ μΈκΈ ν Monte Carlo λ°©λ²μ΄ μΌλ§λ μ μλνλμ§ νμΈνκΈ° μν΄ λͺ κ°μ§ ν μ€νΈλ₯Ό μννμ΅λλ€. μ΄κ²μ΄ λ΄κ° μ»μ κ²μ λλ€ :
μ λμν μμμ κ²½μ° λ λμνμ΄ κ±°μ λμΌν λ³λμ λνλ΄λ κ°μ΄ μ½κ° λ ν¬κ² λνλ©λλ€. νμμμ κ°μ₯ ν° λ³νλ μ°¨μ΄ μ€λ€ μ€λ²μ VS 2,500 1,000 μν κ°μ λΉκ΅ μ (x, y) = (2.4,1.5) λ°μ 0.0126
λλ ~1.3%
. μ κ²½μ°μλ μ΄κ²μ΄ λλΆλΆ νμ©λ©λλ€.
νΈμ§ : λ°©κΈ 2 μ°¨μμμ Scottμ κ·μΉμ΄ μ¬κΈ°μ μ£Όμ΄μ§ μ μμ λ°λΌ Silvermanμ κ·μΉκ³Ό λμΌνλ€λ κ²μ μμ μ΅λλ€ .
λ΅λ³
κ°λ¨ν λ°©λ²μ μ λΆ μμμ λμ€ν° ννκ³ μ λΆμ λν μ΄μ° κ·Όμ¬λ₯Ό κ³μ°νλ κ²μ λλ€.
μ£Όμν΄μΌ ν μ¬νμ΄ μμ΅λλ€.
-
ν¬μΈνΈμ λ²μλ³΄λ€ λ λ§μ κ²μ ν¬ν¨ν΄μΌν©λλ€. 컀λ λ°λ μΆμ μΉκ° μΈμ κ°λ₯ν κ°μ κ°μ§ λͺ¨λ μμΉλ₯Ό ν¬ν¨ν΄μΌν©λλ€. μ¦, ν¬μΈνΈμ λ²μλ₯Ό 컀λ λμνμ 3 ~ 4 λ°°λ‘ νμ₯ν΄μΌν©λλ€ (κ°μ°μ€ 컀λμ κ²½μ°).
-
λμ€ν°μ ν΄μλμ λ°λΌ κ²°κ³Όκ° μ½κ° λ€λ₯Ό μ μμ΅λλ€. ν΄μλλ λμνμ μμ λΆλΆμ΄μ΄μΌν©λλ€. κ³μ° μκ°μ λμ€ν°μ μ μμ λΉλ‘νκΈ° λλ¬Έμ μλ ν κ²λ³΄λ€ κ±°μΉ ν΄μλλ₯Ό μ¬μ©νμ¬ μΌλ ¨μ κ³μ°μ μννλ λ° κ±°μ μκ°μ΄ κ±Έλ¦¬μ§ μμ΅λλ€. μ΅κ³ μ ν΄μλ. κ·Έλ μ§ μμ κ²½μ° λ μ λ°ν ν΄μλκ° νμν μ μμ΅λλ€.
λ€μμ 256 ν¬μΈνΈμ λ°μ΄ν° μΈνΈμ λν κ·Έλ¦Όμ λλ€.
ν¬μΈνΈλ λ κ°μ 컀λ λ°λ μΆμ μΉμ κ²Ήμ³μ§ κ²μ μ μΌλ‘ νμλ©λλ€. 6 κ°μ ν° μ μ μ μ μκ³ λ¦¬μ¦μ΄ νκ°λλ "νλ‘λΈ"μ λλ€. μ΄κ²μ 1000 x 1000 μ μ ν΄μλμμ 4 κ°μ λμν (κΈ°λ³Έμ μΌλ‘ 1.8 (μμ§)κ³Ό 3 (μν), 1/2, 1, 5 λ¨μ)μ λν΄ μνλμμ΅λλ€. λ€μ μ°μ λ 맀νΈλ¦μ€λ κ²°κ³Όκ° 6 κ°μ§ νλ‘λΈ ν¬μΈνΈμ λμνμ μΌλ§λ κ°ν μν₯μ λ―ΈμΉλμ§λ₯Ό 보μ¬μ€λλ€.
λ³νμ λ κ°μ§ μ΄μ λ‘ λ°μν©λλ€. λΆλͺ ν λ°λ μΆμ μΉκ° λ€λ₯΄λ―λ‘ ν κ°μ§ ννμ λ³λμ΄ λ°μν©λλ€. λ μ€μν κ²μ λ°λ μΆμ μΉμ μ°¨μ΄κ° λ¨μΌ ( "νλ‘λΈ") μ§μ μμ ν° μ°¨μ΄λ₯Ό λ§λ€ μ μλ€λ κ² μ λλ€. νμμ λ³νμ μ κ΅°μ§μ μ€κ° λ°λ "μ μ§"μ£Όμμμ κ°μ₯ ν½λλ€.μ΄ κ³μ°μ΄ κ°μ₯ λ§μ΄ μ¬μ©λλ μμΉμ λλ€.
μ΄λ μ΄λ¬ν κ³μ° κ²°κ³Όλ₯Ό μ¬μ©νκ³ ν΄μ ν λ μλΉνμ£Όμκ° νμνλ€λ κ²μ 보μ¬μ€λλ€. μ΄λ μλμ μΌλ‘ μμμ κ²°μ (μ¬μ©ν λμν)μ λ§€μ° λ―Όκ° ν μ μκΈ° λλ¬Έμ λλ€.
R μ½λ
μ΄ μκ³ λ¦¬μ¦μ 첫 λ²μ§Έ ν¨μμ 6 μ€μ ν¬ν¨λμ΄ f
μμ΅λλ€. μ¬μ©λ²μ μ€λͺ
νκΈ° μν΄ λλ¨Έμ§ μ½λλ μμ κ·Έλ¦Όμ μμ±ν©λλ€.
library(MASS) # kde2d
library(spatstat) # im class
f <- function(xy, n, x, y, ...) {
#
# Estimate the total where the density does not exceed that at (x,y).
#
# `xy` is a 2 by ... array of points.
# `n` specifies the numbers of rows and columns to use.
# `x` and `y` are coordinates of "probe" points.
# `...` is passed on to `kde2d`.
#
# Returns a list:
# image: a raster of the kernel density
# integral: the estimates at the probe points.
# density: the estimated densities at the probe points.
#
xy.kde <- kde2d(xy[1,], xy[2,], n=n, ...)
xy.im <- im(t(xy.kde$z), xcol=xy.kde$x, yrow=xy.kde$y) # Allows interpolation $
z <- interp.im(xy.im, x, y) # Densities at the probe points
c.0 <- sum(xy.kde$z) # Normalization factor $
i <- sapply(z, function(a) sum(xy.kde$z[xy.kde$z < a])) / c.0
return(list(image=xy.im, integral=i, density=z))
}
#
# Generate data.
#
n <- 256
set.seed(17)
xy <- matrix(c(rnorm(k <- ceiling(2*n * 0.8), mean=c(6,3), sd=c(3/2, 1)),
rnorm(2*n-k, mean=c(2,6), sd=1/2)), nrow=2)
#
# Example of using `f`.
#
y.probe <- 1:6
x.probe <- rep(6, length(y.probe))
lims <- c(min(xy[1,])-15, max(xy[1,])+15, min(xy[2,])-15, max(xy[2,]+15))
ex <- f(xy, 200, x.probe, y.probe, lim=lims)
ex$density; ex$integral
#
# Compare the effects of raster resolution and bandwidth.
#
res <- c(8, 40, 200, 1000)
system.time(
est.0 <- sapply(res,
function(i) f(xy, i, x.probe, y.probe, lims=lims)$integral))
est.0
system.time(
est.1 <- sapply(res,
function(i) f(xy, i, x.probe, y.probe, h=1, lims=lims)$integral))
est.1
system.time(
est.2 <- sapply(res,
function(i) f(xy, i, x.probe, y.probe, h=1/2, lims=lims)$integral))
est.2
system.time(
est.3 <- sapply(res,
function(i) f(xy, i, x.probe, y.probe, h=5, lims=lims)$integral))
est.3
results <- data.frame(Default=est.0[,4], Hp5=est.2[,4],
H1=est.1[,4], H5=est.3[,4])
#
# Compare the integrals at the highest resolution.
#
par(mfrow=c(1,1))
panel <- function(x, y, ...) {
points(x, y)
abline(c(0,1), col="Red")
}
pairs(results, lower.panel=panel)
#
# Display two of the density estimates, the data, and the probe points.
#
par(mfrow=c(1,2))
xy.im <- f(xy, 200, x.probe, y.probe, h=0.5)$image
plot(xy.im, main="Bandwidth=1/2", col=terrain.colors(256))
points(t(xy), pch=".", col="Black")
points(x.probe, y.probe, pch=19, col="Red", cex=.5)
xy.im <- f(xy, 200, x.probe, y.probe, h=5)$image
plot(xy.im, main="Bandwidth=5", col=terrain.colors(256))
points(t(xy), pch=".", col="Black")
points(x.probe, y.probe, pch=19, col="Red", cex=.5)
λ΅λ³
μ μ ν μμ κ΄μΈ‘μΉκ°μλ κ²½μ° ν΅ν©μ μ ν μννμ§ μμλλ©λλ€. μλ‘μ΄ ν¬μΈνΈκ° . λΉμ μ΄ λ°λ μΆμ μ΄ κ°μ ; λν κ΄μΈ‘μΉ μ λ₯Ό μμ½ νκ³ νλ³Έ ν¬κΈ°λ‘ λλλλ€. μ΄κ²μ νμν νλ₯ μ λν κ·Όμ¬μΉλ₯Ό μ 곡ν©λλ€.
x0f^
x
f^(x)<f^(x0)
μ΄κ²μ κ° "λ무 μμ§ μλ€"κ³ μν ν¬κΈ°κ° μ λ°λ μ§μμμ μ μ ν μΆμ μΉλ₯Ό μ 곡νκΈ°μ μΆ©λΆν ν¬κ³ (νμ° λ μ λλ‘) κ°μ ν©λλ€. μ΄λ³ λ κ²½μ° 20000 κ±΄μ΄ μΆ©λΆν 컀 보μ λλ€ .
f^(x0)x