Функция R density ()

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

(Примечание: также 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.


person chris17    schedule 14.06.2016    source источник
comment
Прочтите информацию о как задать хороший вопрос и как задать воспроизводимый пример. Это поможет другим людям помочь вам.   -  person zx8754    schedule 14.06.2016
comment
Что такое относительно небольшая стоимость? Относительно чего? -1e100? 1e-100? :)   -  person Therkel    schedule 14.06.2016
comment
Привет! Большое спасибо за ваш ответ - если бы я мог воспроизвести / обобщить феномен, я был бы счастлив. Как указано, density () обычно работает нормально, за исключением этого странного набора данных - возможно, кто-то знает, что могло пойти не так.   -  person chris17    schedule 14.06.2016
comment
О нет, только 1e-10, так что у r не должно быть проблем. Тем не менее я упомянул об этом, потому что это единственная актуальная информация, которая у меня есть из моего набора данных. (еще раз - прошу прощения, что я не могу сформулировать вопрос более кратко - все кажется таким нормальным, на вкладке все еще плотность () дает здесь такие странные результаты)   -  person chris17    schedule 14.06.2016
comment
Что выводит summary(tab)?   -  person Roland    schedule 14.06.2016
comment
Я не понимаю, почему он работает иначе, чем обычно. Если вы выполните интегрирование по выходным данным плотности, он вернет 1, как и следовало ожидать от плотности; sum(density(tab)$y[-1]*diff(density(tab)$x)). Функция плотности может легко принимать значения больше 1. Возможно, вам поможет этот вопрос: Как плотность вероятности может быть больше единицы и интегрироваться в единицу   -  person Therkel    schedule 14.06.2016


Ответы (1)


Хотя я не могу точно воспроизвести ваш пример, мне кажется, что у вас есть огромный выброс в вашем наборе данных. То есть ваш 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. Тогда плотность будет выглядеть примерно так: вырожденный график плотности [1]Значения плотности выглядят так, будто их можно перепутать для частот, но это не так. Конечно, если я удалю выброс, то оценочная функция плотности приобретет красивую колоколообразную форму:

график регулярной плотности

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

person bogdata    schedule 14.06.2016
comment
СПАСИБО Bogdata и Therkel, вы сделали мой день :) - person chris17; 14.06.2016