library(MASS) 

# generisanje podataka iz normalne mesavine 
n = 2000
p = c(0.2, 0.3, 0.5)
mu = matrix(c(0, 4, 3, 1, 0, -1), 3, 2)
Sigma = diag(2)
ind = sample(1:3, n, replace = T, prob = p)

# broj jedinica, dvojki i trojki u ind (koliko iz koje raspodele)
k = table(ind) 

x1 = mvrnorm(k[1], mu = mu[1, ], Sigma) 
x2 = mvrnorm(k[2], mu = mu[2, ], Sigma)
x3 = mvrnorm(k[3], mu = mu[3, ], Sigma)
# celi uzorak (dvodimenzionalni)
uzorak = rbind(x1, x2, x3) 
x = uzorak[, 1]
y = uzorak[, 2]

# podrazumevane sirine podeoka za Gausovo jezgro
print(c(bandwidth.nrd(x), bandwidth.nrd(y)))

# ocena gustine jezgrom
fh = kde2d(x, y)

par(mfrow = c(2,2))
# dijagram kontura
contour(fh) 
# prostorni grafik (argumenti dodati zbog lepseg izgleda)
persp(fh, phi = 30, theta = 20, d = 5, xlab = "x") 

# sirine podeoka unakrsnom proverom
h = c(ucv(x), ucv(y))
fh = kde2d(x, y, h = h)
contour(fh)
persp(fh, phi = 30, theta = 20, d = 5, xlab = "x")

