1 Problématique

L’estimation de la densité d’une distribution bornée pose problème parce que la densité estimée n’est pas nulle hors des bornes.

Le calcul de la densité d’une variable est réalisé par la fonction density() du package stats.

L’exemple suivant estime la densité de 1000 tirages d’une loi uniforme entre 1 et 2. La densité de probabilité théorique de cette distribution est 1 entre 1 et 2, et 0 hors de ces bornes. Comme l’estimation dépend principalement de la bande passante choisie, son choix est fait dès le début. La bande passante optimale (voir l’aide de la fonction bw.SJ) selon Sheather et Jones (1991) est calculée. Elle sera retenue par la suite pour permettre de comparer différentes méthodes.

# Valeur des bornes
borne_gauche <- 1
borne_droite <- 2
# Tirage de 1000 valeurs
distribution <- runif(1000, min = borne_gauche, max = borne_droite)
# Histogramme de la distribution
hist(distribution)

# Choix d'une bande passante pour l'estimation
(bande_passante <- bw.SJ(distribution))
## [1] 0.04249025
# Estimation de la densité
d_reference <- density(distribution, bw = bande_passante)
plot(d_reference)

L’estimation n’est pas nulle hors de l’intervalle \([1, 2]\).

2 Solutions possibles

2.1 Censure de l’estimation

La fonction density accepte les arguments fromet to pour censurer l’estimation aux bornes choisies.

d_censuree <- density(distribution, bw = bande_passante, 
    from = borne_gauche, to = borne_droite)
plot(d_censuree)

L’effet des arguments fromet to est simplement de supprimer les valeurs estimées hors de l’intervalle.

plot(d_reference)
lines(d_censuree, col = "red")
abline(v = borne_gauche, lty = 2)
abline(v = borne_droite, lty = 2)