La largeur de bande optimale pour l'estimation dérivée sera différente de la largeur de bande pour l'estimation de densité. En général, chaque caractéristique d'une densité a son propre sélecteur de bande passante optimal.
Si votre objectif est de minimiser l'erreur quadratique moyenne intégrée (qui est le critère habituel), cela n'a rien de subjectif. Il s'agit de dériver la valeur qui minimise le critère. Les équations sont données dans la section 2.10 de Hansen (2009) .
La partie délicate est que la bande passante optimale est fonction de la densité elle-même, donc cette solution n'est pas directement utile. Il existe un certain nombre de méthodes pour tenter de résoudre ce problème. Celles-ci se rapprochent généralement de certaines fonctionnelles de la densité en utilisant des approximations normales. (Remarque: il n'y a pas d'hypothèse que la densité elle-même est normale. L'hypothèse est que certaines fonctionnelles de la densité peuvent être obtenues en supposant la normalité.)
L'endroit où les approximations sont imposées détermine la qualité du sélecteur de bande passante. L'approche la plus grossière est appelée "règle de référence normale" qui impose l'approximation à un niveau élevé. La fin de la section 2.10 dans Hansen (2009) donne la formule utilisant cette approche. Cette approche est implémentée dans la hns()
fonction du ks
package sur CRAN. C'est probablement le meilleur que vous obtiendrez si vous ne voulez pas écrire votre propre code. Vous pouvez donc estimer la dérivée d'une densité comme suit (en utilisant ks
):
library(ks)
h <- hns(x,deriv.order=1)
den <- kdde(x, h=h, deriv.order=1)
Une meilleure approche, généralement connue sous le nom de sélecteur "plug-in direct", impose l'approximation à un niveau inférieur. Pour une estimation droite de la densité, il s'agit de la méthode Sheather-Jones, implémentée dans R using density(x,bw="SJ")
. Cependant, je ne pense pas qu'il existe une fonction similaire disponible dans un package R pour l'estimation des dérivés.
Plutôt que d'utiliser une estimation directe du noyau, vous pourriez être mieux avec un estimateur polynomial local. Cela peut être fait en utilisant la locpoly()
fonction du ks
package dans R. Encore une fois, aucune sélection de bande passante optimale n'est implémentée, mais le biais sera plus petit que pour les estimateurs du noyau. par exemple,
den2 <- locpoly(x, bandwidth=?, drv=1) # Need to guess a sensible bandwidth