如何在y轴上绘制比例密度图?

如何在y轴上绘制比例密度图?

问题描述:

我使用的SM包中的R,以绘制与不同样本大小的若干变量的密度曲线图,像这样:如何在y轴上绘制比例密度图?

var1 <- density(vars1[,1]) 
var2 <- density(vars2[,1]) 
var3 <- density(vars3[,1]) 

pdf(file="density.pdf",width=8.5,height=8) 
plot(var1,col="BLUE") 
par(new=T) 
plot(var2,axes=FALSE,col="RED") 
par(new=T) 
plot(var3,axes=FALSE,col="GREEN") 
dev.off() 

时遇到的问题是,我想在y轴上,以显示比例,以便我可以以更有意义的方式将不同变量相互比较。现在所有三个密度图的最大值都是完全一样的,我敢肯定,如果Y轴显示比例,他们不会。有什么建议么?非常感谢!

编辑:

我刚知道我不应该绘制在现有的地块之上,所以现在的代码绘制的部分看起来像这样:

pdf(file="density.pdf",width=8.5,height=8) 
plot(var1,col="BLUE") 
lines(var2,col="RED") 
lines(var3,col="GREEN") 
dev.off() 

这些线路的最大值但是现在非常符合样本大小的差异。有没有办法将所有三个变量的比例都放在y轴上,因此曲线下面积对于所有三个变量都是相等的?非常感谢!

不要在现有绘图顶部绘图,因为它们的坐标轴可能不同。在绘制第一个密度后,使用lines()绘制第二个和第三个密度。如有必要,请调整plot()中的ylim参数,以使它们全部合适。

如何样品尺寸应该没有关系的一个例子:

set.seed(1) 
    D1 <- density(rnorm(1000)) 
    D2 <- density(rnorm(10000)) 
    D3 <- density(rnorm(100000)) 
    plot(D1$x,D1$y,type='l',col="red",ylim=c(0,.45)) 
    lines(D2$x,D2$y,lty=2,col="blue") 
    lines(D3$x,D3$y,lty=3,col="green") 

enter image description here

+0

非常感谢!这有帮助。但它看起来像这些线的最大值非常符合样本大小的差异。有没有办法将所有三个变量的比例都放在y轴上? – Abdel 2012-02-20 11:38:31

+1

为了使密度相当,你想要的是在曲线下的相同面积,不一定是相同的最大值。如果没有你的数据,很难判断是否有其他东西需要考虑。你可以发布你的数据,它的一个样本,或类似于你的模拟数据吗?然后我或其他人可能会看看 – 2012-02-20 11:49:24

+0

我不认为最大值是相同的,但它们现在显示的巨大差异显然是由于样本大小的差异。我想要的确实是曲线下的一个相等的面积......对于第一个变量,我有大约100,000个观察值,第二个大约有一半,第三个更小(样本大小差异相当大)。 – Abdel 2012-02-20 11:51:55

你可以让蒂姆的解决方案更灵活一点通过不硬编码的限制。

plot(D1$x,D1$y,type='l',col="red",ylim=c(0, max(sapply(list(D1, D2, D3), 
    function(x) {max(x$y)})))) 

这也将迎合文森特的观点,密度函数不一定限制在它们的范围内。