আপনি গোলকের জন্য বিশেষত উপযুক্ত কার্নেলটি ব্যবহারের বিষয়ে বিবেচনা করতে পারেন, যেমন ভন মাইজেস-ফিশার ঘনত্ব
f(x;κ,μ)∝exp(κμ′x)
যেখানে এবং হল 3 ডি কার্টেসিয়ান স্থানাঙ্কগুলিতে প্রকাশিত একক গোলকের অবস্থান।xμx
ব্যান্ডউইথের এনালগ হ'ল প্যারামিটার । একটি অবস্থান অবদান অবস্থানে একটি ইনপুট বিন্দু থেকে গোলক উপর, ওজন থাকার , তাই হয়x μ ω ( μ )κxμω(μ)
ω(μ)f(x;κ,μ).
প্রতিটি For এর জন্য , সমস্ত ইনপুট পয়েন্ট এই অবদানগুলি যোগ করুন ।μ ixμi
উদাহরণস্বরূপ, R
ভন মাইজ-ফিশার ঘনত্বের গণনা করার জন্য কিছু কোড রয়েছে, কিছু এলোমেলো অবস্থান তৈরি করতে হবে এবং ওজন ( মধ্যে তাদের 12 টি), এবং নির্দিষ্ট কার্নেলের জন্য ফলস্বরূপ কার্নেলের ঘনত্বের মানচিত্র প্রদর্শন করুন মান ( কোডে সমান )। ω ( μ i ) κ 6μiω(μi)κ6
পয়েন্টগুলি কালো বিন্দু হিসাবে তাদের ওজনের সমানুপাতিক areas আকারের হিসাবে দেখানো হয়েছে । কাছাকাছি বড় অবদান পুরো উত্তর অক্ষাংশে স্পষ্ট throughout যখন কোনও অর্থোগ্রাফিক (স্থান থেকে পৃথিবী) এর মতো কোনও উপযুক্ত অভিক্ষেপ দেখানো হয় তখন এর চারপাশের উজ্জ্বল হলুদ-সাদা প্যাচটি প্রায় বৃত্তাকার হবে। ω ( μ i ) ( 100 , 60 )μiω(μi)(100,60)
#
# von Mises-Fisher density.
# mu is the location and x the point of evaluation, *each in lon-lat* coordinates.
# Optionally, x is a two-column array.
#
dvonMises <- function(x, mu, kappa, inDegrees=TRUE) {
lambda <- ifelse(inDegrees, pi/180, 1)
SphereToCartesian <- function(x) {
x <- matrix(x, ncol=2)
t(apply(x, 1, function(y) c(cos(y[2])*c(cos(y[1]), sin(y[1])), sin(y[2]))))
}
x <- SphereToCartesian(x * lambda)
mu <- matrix(SphereToCartesian(mu * lambda), ncol=1)
c.kappa <- kappa / (2*pi*(exp(kappa) - exp(-kappa)))
c.kappa * exp(kappa * x %*% mu)
}
#
# Define a grid on which to compute the kernel density estimate.
#
x.coord <- seq(-180, 180, by=2)
y.coord <- seq(-90, 90, by=1)
x <- as.matrix(expand.grid(lon=x.coord, lat=y.coord))
#
# Give the locations.
#
n <- 12
set.seed(17)
mu <- cbind(runif(n, -180, 180), asin(runif(n, -1, 1))*180/pi)
#
# Weight them.
#
weights <- rexp(n)
#
# Compute the kernel density.
#
kappa <- 6
z <- numeric(nrow(x))
for (i in 1:nrow(mu)) {
z <- z + weights[i] * dvonMises(x, mu[i, ], kappa)
}
z <- matrix(z, nrow=length(x.coord))
#
# Plot the result.
#
image(x.coord, y.coord, z, xlab="Longitude", ylab="Latitude")
points(mu[, 1], mu[, 2], pch=16, cex=sqrt(weights))