2016-06-14 2 views
0

Извините, если этот вопрос тривиален, но я не вижу решения: я часто использовал функцию density(), всегда без проблем, но теперь я работаю с некоторыми наборами данных - позволяет называть это вкладкой - с помощью (многие) относительно небольшие значения, и вдруг density(tab) дает что-то вроде абсолютных частот - любые идеи, что я сделал не так?Функция R density()

(Примечание: Также hist(tab, freq = FALSE) дает что-то странное на вкладке.)

Примечание: summary(tab) дает:

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

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

Я также очень благодарен за любой намек общего, при каких обстоятельствах density() дает никаких относительные частоты в виде y-значений.

+0

Пожалуйста, прочтите информацию о [как задать хороший вопрос] (http://stackoverflow.com/help/how-to-ask) и как дать [воспроизводимый пример] (http://stackoverflow.com/вопросы/5963269). Это облегчит вам помощь другим людям. – zx8754

+0

Что такое относительная небольшая ценность? Относительно чего? '-1e100'? '1e-100'? :) – Therkel

+0

Привет! Большое спасибо за ваш ответ - если бы я мог воспроизвести/обобщить феномен, я был бы счастлив. Как указано, плотность() обычно отлично работает, за исключением этого странного набора данных - может быть, кто-то знает, что могло бы пойти не так. – chris17

ответ

1

Хотя я не могу точно воспроизвести ваш пример, мне кажется, что у вас огромный выброс в вашем наборе данных. I.e, ваш 3-й квартиль составляет 0,005, но максимальное значение равно 0,584. На реальной оси расстояние от 3-го квартиля до минимального значения равно 0,01. Расстояние от 3-го квартиля до максимального значения составляет более 0,583. Это в 58 раз дальше! По моему пониманию, density пытается выбрать полосу пропускания, которая хорошо работает во всех значениях. В этом случае ширина полосы пропускания, вероятно, будет очень малой, учитывая, что большинство значений группируются вместе близко к 0. В этом случае вы можете получить очень вырожденный график плотности с двумя вертикальными линиями, один слева и один на правильно. Я был в состоянии произвести один такой участок, используя:

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

Все, что я сделать, это взять образец из нормального распределения с SD 0,001, и добавить 100, выброс, к этому распределению. Плотность тогда выглядит примерно так: degenerate density plot[1] Значения плотности наверняка выглядят так, как будто их можно путать для частот, но это не так. Конечно, если я удалю выброс, то функция оценивается плотность становится хорошо колоколообразным:

regular density plot

Таким образом, вполне вероятно, что вам нужно удалить из вашего выброса данных.

+0

СПАСИБО БОГДАТА И ТЕРКЕЛ, ты сделал мой день :) – chris17