Supposons que j'ai une variable comme X
avec une distribution inconnue. Dans Mathematica, en utilisant la SmoothKernelDensity
fonction, nous pouvons avoir une fonction de densité estimée. Cette fonction de densité estimée peut être utilisée avec la PDF
fonction pour calculer la fonction de densité de probabilité d'une valeur comme X
sous la forme de PDF[density,X]
supposer que la "densité" est le résultat de SmoothKernelDensity
. Ce serait bien s'il y avait une telle fonctionnalité dans R. C'est ainsi que cela fonctionne dans Mathematica
http://reference.wolfram.com/mathematica/ref/SmoothKernelDistribution.html
À titre d'exemple (basé sur les fonctions Mathematica):
data = RandomVariate[NormalDistribution[], 100]; #generates 100 values from N(0,1)
density= SmoothKernelDistribution[data]; #estimated density
PDF[density, 2.345] returns 0.0588784
Vous trouverez ici plus d'informations sur le PDF:
http://reference.wolfram.com/mathematica/ref/PDF.html
Je sais que je peux tracer sa fonction de densité en utilisant density(X)
dans R et en utilisant ecdf(X)
je peux obtenir sa fonction de distribution cumulative empirique.Est-il possible de faire la même chose en R sur la base de ce que j'ai décrit à propos de Mathematica?
Toute aide et idée est appréciée.
density(x)
donne une estimation du pdf, comme vous l'avez déjà noté, mais sa pertinence dépend de l'objectif pour lequel vous voulez avoir la densité. Notez, par exemple, que la variance est biaisée (en effectuant la convolution, vous ajoutez la variance du noyau à la variance des données, elle-même une estimation non biaisée) - ces compromis biais-variance sont omniprésents. Il existe d'autres alternatives, telles que l'estimation de la densité log-spline, par exemple - mais encore une fois, sa pertinence dépend en partie de ce que vous voulez en faire.ecdf(X)
me donne le centile équivalent de 7,5 mais ce n'est pas ce que je recherche.ecdf(b)-ecdf(a)
Réponses:
?density
souligne qu'il utilise déjàapprox
pour effectuer une interpolation linéaire;?approx
souligne queapproxfun
génère une fonction appropriée:En utilisant à
integrate
partir d'une distance appropriée inférieure au minimum dans l'échantillon (un multiple - disons 4 ou 5, peut-être - de la bande passante utilisée endf
ferait généralement pour une distance appropriée), on peut obtenir une bonne approximation du cdf correspondant àdf
.la source
df(2.3)
donne la valeur de la fonction de densité estimée àx=2.3
mais ce quiPDF
fait dans Mathematica donne l'aire sous la courbe ci-dessusx=2.3
. Je ne suis pas sûr de cela, c'est juste ma supposition, pouvez-vous reproduire ce que j'ai fait dans Mathematica?PDF
dans Mathematica fait ce que vous avez décrit dans votre réponse (c'est-à-dire trouver la valeur de la fonction de densité pour une valeur X donnée) alors je pense que j'ai obtenu ma réponse. Il y a juste beaucoup de confusion sur l'utilisation des mots!PDF
page dit qu'elle fait, elle renvoie le même genre de chose que moi, mais les méthodes qu'elle utilise dans son calcul dans ce cas sont susceptibles d'être un peu plus précises (à cette fin, une précision supplémentaire a cependant peu de valeur). Pour une discussion de la distinction probabilité / densité, voir ici et ici .