Я пытаюсь построить контуры функции, состоящей из двух гауссиан, один с центром в (2, 2), а другой с центром в (-2, -2). Вот мой код.
k1 <- 2
k2 <- 2
mu1 <- rbind(2, 2)
mu2 <- rbind(-2, -2)
sigma1 <- rbind(c(.6, 0), c(0, .6))
sigma2 <- rbind(c(.3, 0), c(0, .3))
det1 <- det(sigma1)
det2 <- det(sigma2)
inv1 <- solve(sigma1)
inv2 <- solve(sigma2)
x <- runif(1000, -5, 5)
y <- runif(1000, -5, 5)
w <- rbind(x, y)
ratio <- function(v){
quotient <- log((2*pi)^(-k1/2)*det1^(-1/2)*(exp((-1/2)*t(v-mu1)%*%inv1%*%(v-mu1))))/log((2*pi)^(-k2/2)*det2^(-1/2)*(exp((-1/2)*t(v-mu2)%*%inv2%*%(v-mu2))))
return(quotient)
}
z <- apply(w, 2, ratio)
round.z <- round(z, digits=0)
df <- cbind(x, y, z, round.z)
df <- as.data.frame(df)
grid <- with(df, interp(x, y, z))
contour(grid, levels=0:10, asp=1)
Но когда я рисую эти контуры, я просто получаю контуры с целыми числами. Это выглядит так: введите описание изображения здесь
В первых квадрантах должно быть больше похожих контуров с десятичными значениями (потому что я использую соотношение), но они не появляются. Кажется, я не могу найти, как получить contour () для построения десятичных знаков. Кто-нибудь знает, как решить эту проблему?