# dane z mtcars
data(mtcars)
attach(mtcars)
bw_ust <- 1
#gauss
oszac_gestoscg <- density(mpg,kernel="gaussian",bw = bw_ust)
plot(oszac_gestoscg)

#epanechnikov
oszac_gestosce <- density(mpg,kernel="epanechnikov",bw= bw_ust)
plot(oszac_gestosce)

#rectangular
oszac_gestoscr <- density(mpg,kernel="rectangular",bw= bw_ust)
plot(oszac_gestoscr)

#triangular
oszac_gestosct <- density(mpg,kernel="triangular",bw= bw_ust)
plot(oszac_gestosct)

#biweight
oszac_gestoscb <- density(mpg,kernel="biweight",bw= bw_ust)
plot(oszac_gestoscb)

#cosine
oszac_gestoscc <- density(mpg,kernel="cosine",bw= bw_ust)
plot(oszac_gestoscc)

#optcosine
oszac_gestosco <- density(mpg,kernel="optcosine",bw= bw_ust)
plot(oszac_gestosco)

#WNIOSEK
#Im większa wartość parametru szerokości pasma (bw_ust), tym bardziej wygładzony staje się wykres estymacji gęstości.
#Różne rodzaje jąder (np. Gaussowskie, Epanechnikova, prostokątne, trójkątne) wpływają na kształt krzywej gęstości, co powoduje subtelne różnice w wynikowym rozkładzie.
#szacowanie gestosci
gestosc1 <- oszac_gestosct
#wartosci dystrybuanty
dystrybuanta <- approxfun(gestosc1$x, cumsum(gestosc1$y/sum(gestosc1$y)))
dystrybuanta
## function (v)
## .approxfun(x, y, v, method, yleft, yright, f, na.rm)
## <bytecode: 0x15a6604d0>
## <environment: 0x15a661030>
#wykresy obok siebie
par(mfrow=c(1,2))
plot(gestosc1)
rug(mpg)
x_vals <- seq(min(mpg), max(mpg), length.out = 100)
plot(x_vals,dystrybuanta(x_vals),type="l")
rug(mpg)
