estimation de la densité du noyau du paquet np avec le noyau Epanechnikov

8

Je travaille avec l'ensemble de données "geyser" du package MASS et compare les estimations de densité du noyau du package np.

Mon problème est de comprendre l'estimation de la densité en utilisant la validation croisée des moindres carrés et le noyau Epanechnikov:

blep<-npudensbw(~geyser$waiting,bwmethod="cv.ls",ckertype="epanechnikov")
plot(npudens(bws=blep))

entrez la description de l'image ici

Pour le noyau gaussien, cela semble bien:

blga<-npudensbw(~geyser$waiting,bwmethod="cv.ls",ckertype="gaussian")
plot(npudens(bws=blga))

entrez la description de l'image ici

Ou si j'utilise le noyau Epanechnikov et le cv maximum de vraisemblance:

bmax<-npudensbw(~geyser$waiting,bwmethod="cv.ml",ckertype="epanechnikov")
plot(npudens(~geyser$waiting,bws=bmax))

Est-ce ma faute ou est-ce un problème dans le colis?

Edit: Si j'utilise Mathematica pour le noyau Epanechnikov et les moindres carrés cv, cela fonctionne:

d = SmoothKernelDistribution[data, bw = "LeastSquaresCrossValidation", ker = "Epanechnikov"]
Plot[{PDF[d, x], {x, 20,110}]
TMoek
la source

Réponses:

6

ÉDITER

Ceci est expliqué dans la FAQ :

J'utilise plot () (npplot ()) pour tracer, disons, une densité et le tracé résultant ressemble à une densité inversée plutôt qu'à une densité

Cela peut se produire lorsque la bande passante basée sur les données est considérablement sous-lissée. Les procédures de sélection de la bande passante basées sur les données (c'est-à-dire automatiques) ne garantissent pas toujours de bons résultats en raison, peut-être, de la présence de valeurs aberrantes ou de l'arrondi / discrétisation des données continues, entre autres. Par défaut, npplot () prend les deux extrêmes des données (minimum, maximum, c'est-à-dire les points de données réels), puis crée une grille de données d'évaluation également espacée (c'est-à-dire pas les points de données réels en général) et calcule la densité de ces points. Étant donné que la bande passante est extrêmement petite, l'estimation de la densité à ces points d'évaluation est correctement nulle, tandis que celles des réalisations d'échantillon (dans ce cas seulement deux, le min et le max) sont non nulles, donc nous obtenons deux pics aux bords de l'intrigue et un bol plat égal à zéro partout ailleurs. Cela peut également se produire lorsque vos données sont fortement discrétisées et que vous les traitez comme continues. Dans de tels cas, le traitement des données comme ordonnées peut entraîner des estimations plus raisonnables

Comme suggéré de traiter les données comme ordonnées, fonctionne:

blep<-npudensbw(~ordered(geyser$waiting), 
                bwmethod="cv.ls", ckertype="epanechnikov", ckerorder=2)

entrez la description de l'image ici

Il réussit également avec des commandes de noyau plus élevées, comme ckerorder=4dans cet exemple:

entrez la description de l'image ici

droits
la source
Merci, mais pourquoi ça marche avec le noyau gaussien ou dans Mathematica?
TMoek du