Vous êtes sur la page 1sur 5

STAT-F-427 - Méthode non paramétriques : Density Estimation

Using Kernel Methods


Ismail El Kadiri

Mars 2023

1 Exercice 1
Nous allons estimer la densité sous-jacente des observations en utilisant les noyaux gaussiens et Epanechnikov pour
différentes valeurs de largeur de bande "h". Voici les grahpiques reprenant les estimateur de la densité de probabilié :

Nous pouvons lire ces graphiques de droite à gauche et de haut en bas représentant l’estimateur de la densité avec
les largeurs de bande "h" égaux à 0.2, 0.4, 0.6 et 0.7. La courbe rouge est l’estimateur calculée par le noyau gaussien,
le courbe verte est l’estimateur avec un noyau d’Epanechnikov et la courbe bleue est la densité que nous tentons
d’estimer. Nous constatons que l’estimateur dépend fortement de la largeur de bande et presque par du noyau choisi
(tant que nous avons de bonnes propriétés de régularité).La largeur de bande proche de 0.6 serait celle qui estimerait
le mieux notre densité de probabilité de départ car estimant plus au moins bien la bite-modalité de la vraie densité.
Nous constatons de manière générale que les pics sont sous-estimée et que les creux sont surestimés.

2 Exercice 2
Nous allons estimer la densité de probabilité à l’aide du noyau gaussien et en prenant une largeur de bande hopt , dit
optimale, donnée par "Rule of Thumb". Cette largeur optimal est donnée par la formule suivante :
4
ĥopt = ( )1/5 σ̂n−1/5
5

1
où l’estimateur de l’écart-type est donnée par la formule suivante :
v
u n
u 1 X
σ̂ = t (xi − x)2
n − 1 i=1

Nous obtenons la valeur suivante :


ĥopt = 0.6217504
et l’estimateur de la densité de probabilité suivante :

Nous pouvons apercevoir une densité bimodale ce qui correspond de près à la réelle densité que nous tentons d’estimer.
Nous remarquons aussi que les pics sont sous-estimée et que les creux surestimée.

3 Exercice 3
Nous allons estimer la densité de probabilité à l’aide du noyau gaussien et en prenant une largeur de bande hopt ,
dit optimale, donnée par les méthodes PLCV et LSCV. Ces méthodes, nous donnes les largeurs de bande optimal
suivante :
n n X n n
1 X xi − xj 2X
X     
ĥopt,P LCV = argmaxh ln fˆh,−i (xi ) et ĥopt,LSCV = argminh (K∗K) − ln fˆh,−i (xi )
i=1
n2 h i=1 j=1 h n i=1

où nous utilisons la pseudo-vraisemblance. Nous avons les fonctions PLCV et LSCV en fonction de h dans les
graphiques ci-dessous :

2
Nous avons les largeurs de bande optimale suivante :

ĥopt,P LCV = 0.6711295 et ĥopt,LSCV = 1.006978

et nous avons donc les estimateurs de la densité de probabilité suivante :

Nous avons la méthode la largeur de bande donnée par la fonction PLCV similaire à celle donnée par la méthode
Rule of Thumb et nous observons un estimateur. Par contre, la bande obtenue par la fonction LSCV est loin d’être
proche de la réelle densité, elle n’est qu’unimodale.

3
4 Implémentation des réponses sur R

1 # Installation du packages devtools


2 install . packages ( " devtools " )
3
4 # Charger le package devtools
5 library ( devtools )
6
7 # Installer le package kedd depuis GitHub
8 install _ github ( " cran / kedd " )
9
10 # Charger le package kedd
11 library ( kedd )

1 # Construction de la fonction de densite a estimer et echantillon .


2

3
4 function _ ref <- function ( x ) {
5 return (0.6 * (1 / ( sqrt (2 * pi ) ) ) * exp ( -( x +1) ^2 / (2) )
6 + 0.4 * (1 / ( sqrt (2 * pi ) ) ) * exp ( -(x -2) ^2 / (2) ) )
7 }
8

9 df <- running _ example $ V1


10
11 curve ( function _ ref ( x ) , from = -6 , to =6 , add = TRUE , col = " blue " )
12 title ( " Densite de probabilite a estimer " )

1 # Exercice 1
2

3 bw _ test = 0.7
4
5 d _ gauss <- density ( df , kernel = " gaussian " , bw = bw _ test )
6 d _ epa <- density ( df , kernel = " epanechnikov " , bw = bw _ test )
7
8 par ( mfrow = c (2 ,2) )
9 plot ( d _ gauss $x , d _ gauss $y , type = " l " , xlab = " x " , ylab = " f ( x ) " , col = " red " )
10 lines ( d _ epa $x , d _ epa $y , col = " darkgreen " )
11 curve ( function _ ref ( x ) , from = -5 , to =5 , add = TRUE , col = " blue " )

1 # Exercice 2
2
3 d _ gauss _ opt <- density ( df , kernel = " gaussian " , bw = ’ nrd0 ’)
4 bw _ opt _ rot <- print ( d _ gauss _ opt $ bw )
5
6 plot ( d _ gauss _ opt $x , d _ gauss _ opt $y , type = " l " , xlab = " x " , ylab = " f ( x ) " , col =
" red "
7 , main = " Estimateur avec noyau gaussien et bw par Rule of Thumb " )
8 curve ( function _ ref ( x ) , from = -5 , to =5 , add = TRUE , col = " blue " )

4
1 # Exercice 3
2
3
4 # Bandwith optimal avec PLCV
5
6 density _ hat _ plcv <- h . mlcv ( df , bwmethod = " mlcv " )
7 plot ( density _ hat _ plcv )
8 h _ opt _ plcv <- density _ hat _ plcv $ h
9 d _ gauss _ plcv <- density ( df , kernel = " gaussian " , bw = h _ opt _ plcv )
10 plot ( d _ gauss _ plcv $x , d _ gauss _ plcv $y , type = " l " , xlab = " x " , ylab = " f ( x ) " , col =
" red "
11 , main = " Estimateur avec noyau gaussien et bw optimal par la methode PLCV " )
12 curve ( function _ ref ( x ) , from = -5 , to =5 , add = TRUE , col = " blue " )
13
14 # Bandwith optimal avec LSCV
15
16 density _ hat _ lscv <- h . ucv ( df , bwmethod = " ucv " )
17 plot ( density _ hat _ lscv )
18 h _ opt _ lscv <- density _ hat _ lscv $ h
19 h _ opt _ lscv
20 d _ gauss _ lscv <- density ( df , kernel = " gaussian " , bw = h _ opt _ lscv )
21 plot ( d _ gauss _ lscv $x , d _ gauss _ lscv $y , type = " l " , xlab = " x " , ylab = " f ( x ) " , col =
" red "
22 , main = " Estimateur avec noyau gaussien et bw optimal par la methode LSCV " )
23 curve ( function _ ref ( x ) , from = -5 , to =5 , add = TRUE , col = " blue " )

Vous aimerez peut-être aussi