【发布时间】:2012-01-10 18:47:56
【问题描述】:
有没有一种简单的方法来绘制两个概率密度函数之间的差异?
我可以在同一个图上绘制我的数据集的 pdf(两者都是具有大约 11000 个值的一维向量),以了解重叠/差异,但如果我能看到它会对我更有用差异图。
类似于以下内容(尽管这显然行不通):
> plot(density(data1)-density(data2))
我对 R 比较陌生,在任何论坛上都找不到我想要的东西。
提前致谢
【问题讨论】:
有没有一种简单的方法来绘制两个概率密度函数之间的差异?
我可以在同一个图上绘制我的数据集的 pdf(两者都是具有大约 11000 个值的一维向量),以了解重叠/差异,但如果我能看到它会对我更有用差异图。
类似于以下内容(尽管这显然行不通):
> plot(density(data1)-density(data2))
我对 R 比较陌生,在任何论坛上都找不到我想要的东西。
提前致谢
【问题讨论】:
这应该可行:
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 时犯了没有采取这一步的错误。太糟糕了,我不记得正确的论点了。
【讨论】:
看来您需要花一点时间学习如何使用 R(或任何其他语言,就此而言)。帮助文件是您的朋友。
来自?density 的输出:
值[即函数返回的数据]
如果 give.Rkern 为真,则为数 R(K),否则为具有类的对象 “密度”,其底层结构是一个包含 以下组件。
x 估计密度的点的 n 个坐标。
y 估计的密度值。这些将是非负的,但可以 为零[为简洁起见,删除“值”的其余部分]
所以,做:
foo<- density(data1)
bar<- density(data2)
plot(foo$y-bar$y)
【讨论】:
density 使用 512 个点,但是如果您使用网格或者 data1 和 data2 的范围不同,您需要确保 foo$x 和 bar$x 是 "对齐”。