两个密度图之间的差异

时间:2012-01-10 18:47:57

标签: r plot

是否有简单的方法来绘制两个概率密度函数之间的差异?

我可以在同一个绘图上绘制我的数据集的pdf(两者都是一维向量,大约11000个值),以便了解重叠/差异,但如果我能看到它对我来说会更有用一个差异的情节。

以下内容(虽然这显然不起作用):

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

我对R比较陌生,无法在任何论坛上找到我想要的内容。

提前致谢

2 个答案:

答案 0 :(得分:5)

这应该有效:

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 )

诀窍是确保密度具有相同的限制。然后你可以在相同的位置绘制他们的差异。我对相同限制的需要的理解来自于在回答similar question on Rhelp several years ago时没有采取这一步骤的错误。太糟糕了,我记不起正确的论点。

答案 1 :(得分:1)

看起来您需要花一点时间学习如何使用R(或任何其他语言)。帮助文件是你的朋友。 从?density的输出:

  

价值[即函数返回的数据]

     

如果give.Rkern为真,则为数字R(K),否则为具有类的对象   “密度”,其底层结构是一个包含该列表的列表   以下组件。

     

x估计密度的点的n个坐标。

     

y估计的密度值。这些都是非负面的,但可以   为零[为了简洁而删除“值”的剩余部分]

所以,做:

foo<- density(data1) 
bar<- density(data2)
plot(foo$y-bar$y)