2016-06-14 3 views
0

Désolé, cette question est triviale mais je ne vois pas de solution: J'ai utilisé la fonction density() fréquemment, toujours sans problèmes, mais maintenant je travaille avec un ensemble de données - appelons-le onglet - avec (beaucoup) des valeurs relativement petites et soudainement density(tab) donne quelque chose comme des fréquences absolues - des idées que j'ai mal fait?R densité() fonction

(Note: Aussi hist(tab, freq = FALSE) donne quelque chose de bizarre pour onglet.)

Remarque: summary(tab) donne:

Min./ 1st Qu./ Median / Mean/ 3rd Qu./ Max. 

-0.0042810 /0.0002679/0.0011750/0.0071690/0.0049510 /0.5839000 

Je serais également très reconnaissant pour toute indication générale, dans quelles circonstances density() donne pas les fréquences relatives en tant que valeurs y.

+0

S'il vous plaît lire l'information sur [Comment poser une bonne question] (http://stackoverflow.com/help/how-to-ask) et comment donner un [exemple reproductible] (http://stackoverflow.com/questions/5963269). Cela rendra beaucoup plus facile pour les autres de vous aider. – zx8754

+0

Qu'est-ce qu'une petite valeur relative? Relatif à quoi? '-1e100'? '1e-100'? :) – Therkel

+0

Salut! Merci beaucoup pour votre réponse - si je pouvais reproduire/généraliser le phénomène, je serais heureux. Comme indiqué, la densité() fonctionne généralement bien, sauf pour cet ensemble de données étrange - peut-être quelqu'un a une idée de ce qui pourrait avoir mal tourné. – chris17

Répondre

1

Bien que je ne puisse reproduire exactement votre exemple, il me semble que vous avez une énorme valeur aberrante dans votre ensemble de données. C'est-à-dire que votre troisième quartile est 0,005, mais la valeur maximale est 0,584. Sur l'axe réel, la distance entre votre troisième quartile et votre valeur minimale est de 0,01. La distance entre le troisième quartile et la valeur maximale est supérieure à 0,583. C'est 58 fois plus loin! Selon ma compréhension density essaie de choisir une bande passante qui fonctionne bien à travers toutes les valeurs. Dans ce cas, la bande passante risque d'être très petite, étant donné que la plupart des valeurs sont regroupées près de 0. Dans ce cas, vous pourriez obtenir une courbe de densité très dégénérée, avec deux lignes verticales, une à gauche et une sur le droite. Je suis en mesure de générer un tel complot en utilisant:

plot(density(c(rnorm(100, 0, 0.001), 100))) 

Tout ce que je fais est de prendre un échantillon d'une distribution normale, avec SD de 0,001, et ajouter une valeur aberrante, 100, à cette distribution. La densité ressemble alors à ceci: degenerate density plot[1] Les valeurs de densité ont l'air de pouvoir être confondues avec les fréquences, mais elles ne le sont pas. Bien sûr, si je retire la valeur aberrante alors la fonction de densité estimée devient bien en forme de cloche:

regular density plot

Ainsi, il semble probable que vous devez supprimer une valeur aberrante de vos données.

+0

MERCI Bogdata et Therkel, vous avez fait ma journée :) – chris17