2012-02-20 19 views
0

が、私はこのように、異なるサンプルサイズを持つ複数の変数の密度プロットを描画するためにRにSMパッケージを使用しています:密度プロットを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軸を表示したいということです私は、異なる変数をより意味のある方法で互いに比較することができるように、比率を指定します。 3つの密度プロットの最大値はまったく同じになりました.Y軸に比率が表示されていても、そうでないと確信しています。助言がありますか?どうもありがとう!

編集:

私はちょうど私が今のコードのプロットの部分は次のようになり、既存のプロットの上にプロットべきではないということを学びました。しかし

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

これらの行の最大値サンプルサイズの違いに非常に似ています。 3つの変数すべてに対してy軸の比率を設定する方法はありますか?そのため、曲線下の面積は3つの変数すべてで等しくなりますか?どうもありがとう!

答えて

3

軸が異なる可能性があるため、既存のプロットの上にプロットしないでください。代わりに、lines()を使用して、最初のプロット後に2番目と3番目の濃度をプロットします。必要に応じて、ylimのパラメータをplot()に調整してください。

どのようにサンプルサイズがない問題べきための例:

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

ありがとうございました!それが助けになりました。しかし、それらの線の最大値がサンプルサイズの違いと非常によく似ているように見えます。 3つの変数すべてに対してy軸上の比率を設定する方法はありますか? – Abdel

+1

濃度を匹敵するようにするには、カーブの下の面積が同じである必要があります。必ずしも同じ最大値である必要はありません。しかし、あなたのデータがなくても考慮に入れる必要があるものがあるかどうかは分かりません。あなたのデータ、そのサンプル、またはあなたと同様のシミュレートされたデータを投稿できますか?その後、自分自身や他の人が見ているかもしれません。 –

+0

私は最大値は同じではないと思いますが、大きな違いはサンプルサイズの違いによるものです。私が望むのは実際にカーブの下の平等な領域です...最初の変数については、約10万の観測値を、2番目の観測値は約半分、3番目の観測値はさらに小さくなります(サンプルサイズの差はかなり大きい)。 – Abdel

1

あなたは限界にハードコーディングしないことで、もう少し柔軟なティムのソリューションを作ることができます。

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

これは、密度関数が必ずしもその範囲内に制約されていないことをVincentが指摘している。

関連する問題