# Estimation par noyau

En statistique, l’estimation par noyau (ou encore méthode de Parzen-Rosenblatt ; en anglais, kernel density estimation ou KDE) est une méthode non-paramétrique d’estimation de la densité de probabilité d’une variable aléatoire. Elle se base sur un échantillon d’une population statistique et permet d’estimer la densité en tout point du support. En ce sens, cette méthode généralise astucieusement la méthode d’estimation par un histogramme.

## Définition

Si x$_1$, x$_2$, ..., x$_N$ ~ f est un échantillon i.i.d. d'une variable aléatoire, alors l'estimateur non-paramétrique par la méthode du noyau de la densité est : ${\widehat {f}}_{h}(x)={\frac {1}{Nh}}\sum _{i=1}^{N}K\left({\frac {x-x_{i}}{h}}\right)$
où K est un noyau (kernel en anglais) et h un paramètre nommé fenêtre, qui régit le degré de lissage de l'estimation. Bien souvent, K est choisi comme la densité d'une fonction gaussienne standard (espérance nulle et variance unitaire) : $K(x)={1 \over {\sqrt {2\pi }}}\,e^{-{\frac {1}{2}}x^{2}}$

## Intuition

La méthode de Parzen est une généralisation de la méthode d'estimation par histogramme. Dans un histogramme, la densité en un point x est estimée par la proportion d'observations x$_1$, x$_2$, ..., x$_N$ qui se trouvent à proximité de x. Pour cela, on trace une boîte en x et dont la largeur est gouvernée par un paramètre de lissage h ; on compte ensuite le nombre d'observations qui appartiennent à cette boîte. Cette estimation, qui dépend du paramètre de lissage h, présente de bonnes propriétés statistiques mais est par construction non-continue.
La méthode du noyau consiste à retrouver la continuité : pour cela, on remplace la boîte centrée en x et de largeur h par une gaussienne centrée en x. Plus une observation est proche du point de support x plus la courbe en cloche lui donnera une valeur numérique importante. À l'inverse, les observations trop éloignées de x se voient affecter une valeur numérique négligeable. L'estimateur est formé par la somme (ou plutôt la moyenne) des courbes en cloche. Comme indiqué sur l'image suivante, il est clairement continu.

## Propriétés

La vitesse de convergence de l'erreur quadratique moyenne intégrée, n$^{−4/5}$ est plus faible que la vitesse typique des méthodes paramétriques, généralement n$^{−1}$.
L'utilisation pratique de cette méthode requiert deux choses :
* le noyau K (généralement la densité d'une loi statistique) ;
* le paramètre de lissage h.
Si le choix du noyau est réputé comme peu influent sur l'estimateur, il n'en est pas de même pour le paramètre de lissage. Un paramètre trop faible provoque l'apparition de détails artificiels apparaissant sur le graphe de l'estimateur ; à l'inverse, pour une valeur de h trop grande, la majorité des caractéristiques est au contraire effacée. Le choix de h est donc une question centrale dans l'estimation de la densité.
Une façon répandue d'obtenir une valeur de h est de supposer que l'échantillon est distribué selon une loi paramétrique donnée, par exemple selon la loi normale ${\mathcal {N}}(\mu ,\sigma ^{2})$. Alors, on peut prendre : $h=1,06\,{\widehat {\sigma }}\,n^{-1/5}$ Malheureusement, l'estimation gaussienne n'est pas toujours efficace, par exemple lorsque n est petit.
Une autre façon d'opérer est de chercher à fixer h de manière optimale. Soit R(f , f̂(x)) la fonction de risque de l'espace L$^2$ pour f. Sous des hypothèses faibles sur f et K,
$R(f,{\hat {f}}(x))\approx {\frac {1}{4}}\sigma _{k}^{4}h^{4}\int (f''(x))^{2}\,\mathrm {d} x+{\frac {1}{nh}}\int K^{2}(x)\,\mathrm {d} x$ où $\sigma _{K}^{2}=\int x^{2}K(x)\,\mathrm {d} x$
La fenêtre optimale est obtenue en minimisant la fonction de risque et vaut : $h^{*}={\frac {c_{1}^{-2/5}c_{2}^{1/5}c_{3}^{-1/5}}{n^{1/5}}}$
où
$c_{1}=\int x^{2}K(x)\,\mathrm {d} x$ $c_{2}=\int K(x)^{2}\,\mathrm {d} x$ $c_{3}=\int (f''(x))^{2}\,\mathrm {d} x$
Le paramètre h est toujours proportionnel à n$^{−1/5}$ : c'est la constante que l'on doit rechercher. La méthode précédente n'est pas opérante dans le sens où c$_3$ dépend de la densité f elle-même, qui est justement inconnue.
Il existe dans la littérature différentes méthodes plus sophistiquées (voir méthode de la validation croisée introduite par Rudemo (1982) et Bowman (1984), qui utilise l'estimateur "leave-one-out").

## Implémentations en informatique

* MATLAB : la méthode est codée par la fonction ksdensity ;
* R (logiciel) : la méthode est codée par les scripts density et kde2d et dans le package btb par la fonction kernelSmoothing ;
* SAS : il faut utiliser proc kde pour les densités univariée ou bivariée.
* Python : la fonction gaussian_kde du package scipy (module stats ) permet le calcul de densités multi-dimensionnelles.
* Apache Spark : la classe KernelDensity de la librairie MLlib