2012-01-10 22 views
1

2つの確率密度関数の差をプロットする簡単な方法はありますか?2つの密度プロットの差

私のデータセットのpdfsをプロットして(どちらも1次元ベクトルで約11000の値)、同じプロット上に重なり/差異のアイデアを得ることができます。その差のプロットを見てください。

次の線に沿って何か(これは明らかに動作しませんが):

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

私はRの比較的新しいだと私は、任意の上を探しているものを見つけることができませんでしたフォーラム。事前

答えて

4

これは動作するはずです:

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に答えるステップを踏まなければならないというエラーが発生しています。あまりにも私は正しい議論を思い出すことができませんでした。

+0

助けてくれてありがとう –

1

おかげであなたは(そのことについて、あるいは他の言語)Rを使用する方法を学ぶ少し時間を費やす必要がように見えます。ヘルプファイルはあなたの友人です。 出力から?density

値[関数によって返されるデータ]

give.Rkernがtrueの場合は番号R(K)、それ以外の場合は "密度"のオブジェクトで、基底構造は のコンポーネントを含むリストです。

x密度が推定される点のn座標。

y推定密度値。これらは非負になりますが、 ゼロ[簡潔にするために削除 "値" の残りの部分]

ので、行うことができます:

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

@ジョラン - 清掃ありがとうございます。デフォルトでは、「密度」は512ポイントを使用しますが、グリッドやデータ1とデータ2の範囲が異なる場合は、foo $ xとbar $ xが "整列した "。 –

+4

私はあなたのフラグを立てないようにあなたの答えを(非常に)少し編集しました。私は初心者にも不満を抱いていますが、頭字語は人々に間違ったやり方をつけることができ、一般的にここでは眉をひそめます。 – joran

+1

洞察に感謝します。私は密度を読みましたが、私には、それが私に言っていたことを正しく利用するためにRの構文に慣れていないと思います。学習プロセスのすべての部分! –

関連する問題