Разница между двумя графиками плотности - PullRequest
2 голосов
/ 10 января 2012

Есть ли простой способ построить различие между двумя функциями плотности вероятности?

Я могу построить PDF-файлы моих наборов данных (оба являются одномерными векторами с примерно 11000 значений) на одном графике вместе, чтобы получить представление о перекрытии / разнице, но для меня было бы более полезно, если бы я мог видеть сюжет о разнице.

что-то вроде следующего (хотя это, очевидно, не работает):

> plot(density(data1)-density(data2))

Я относительно новичок в R и не смог найти то, что ищу, ни на одном из форумов.

Заранее спасибо

Ответы [ 2 ]

5 голосов
/ 10 января 2012

Это должно работать:

plot(x =density(data1, from= range(c(data1, data2))[1], 
                       to=range(c(data1, data2))[2] )$x, 
  y=  density(data1, from= range(c(data1, data2))[1], 
                     to=range(c(data1, data2))[2] )$y-
       density(data2,  from= range(c(data1, data2))[1], 
                      to=range(c(data1, data2))[2] )$y )

Хитрость заключается в том, чтобы обеспечить одинаковые пределы плотности.Затем вы можете отобразить их различия в одних и тех же местах. Мое понимание необходимости идентичных пределов происходит из-за ошибки, заключающейся в том, что вы не сделали этого шага, ответив на похожий вопрос о Rhelp несколько лет назад .Жаль, что я не смог вспомнить правильные аргументы.

1 голос
/ 10 января 2012

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

Значение [т.е. данные, возвращаемые функцией]

Если значение give.Rkern равно true, число R (K), в противном случае это объект класса «плотность», базовая структура которой представляет собой список, содержащий следующие компоненты.

x n координат точек, где оценивается плотность.

у расчетных значений плотности. Они будут неотрицательными, но могут быть нулевым [остаток от «значения» удален для краткости]

Итак, сделайте:

foo<- density(data1) 
bar<- density(data2)
plot(foo$y-bar$y) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...