0

R で 2 つのサンプルの密度関数を比較する必要があります。驚いたことに、plot()、lines()、または ggplot のいずれの関数を使用しても、両方のサンプルのいずれかが表示されないか、両方の領域が異なり、1 に等しくなりません。 . サンプルの pdf が他のサンプルの pdf よりも大きい横座標値のセットを簡単に判断できるように、同じグラフで両方の領域を 1 に等しくしたいと思います。どうすれば解決できますか?助けてくれて本当にありがとうございます。

1/ ggplot を使用すると、スクリプトは次のようになります。

require ("ggplot2")
p2<-density(tabgroupcl2$B, n=1000)
p1<-density(tabgroupcl1$B, n=1000)
dat <- data.frame(dens = c(p1$x, p2$x)
                   , lines = rep(c("cl1", "cl2")), each=1000)
ggplot(dat,aes(x = dens, fill = lines)) + geom_density(alpha = 0.5)

2/ 密度 (tabgroupcl2$B) の場合:

Call:
        density.default(x = tabgroupcl2$B)

Data: tabgroupcl2$B (348 obs.); Bandwidth 'bw' = 0.001689

       x                y           
 Min.   :-91.95   Min.   :  0.0000  
 1st Qu.:-34.07   1st Qu.:  0.0000  
 Median : 23.80   Median :  0.0000  
 Mean   : 23.80   Mean   :  0.4613  
 3rd Qu.: 81.68   3rd Qu.:  0.0000  
 Max.   :139.56   Max.   :179.2431  

3/ 密度 (tabgroupcl1$B) の場合:

Call:
        density.default(x = tabgroupcl1$B)

Data: tabgroupcl1$B (9 obs.);   Bandwidth 'bw' = 0.2738

       x                y            
 Min.   :-2.607   Min.   :0.0000000  
 1st Qu.: 1.495   1st Qu.:0.0000000  
 Median : 5.598   Median :0.0001349  
 Mean   : 5.598   Mean   :0.0608673  
 3rd Qu.: 9.700   3rd Qu.:0.0548682  
 Max.   :13.802   Max.   :0.7583033
4

3 に答える 3

1

元のデータであるかのように、ggplot() 関数で密度オブジェクトの x 値を使用しているようです。なぜこれをやりたいのかわかりませんが、もしそうなら、y 値も使用する必要があり、ggplot の密度統計はまったく必要ありません。または、密度統計に作業を任せて、元のデータを使用します。

于 2013-02-03T18:45:11.787 に答える
0

ここに画像の説明を入力これは、2 つのデータセット列を 1 つのプロットに重ねる方法です。

ここでは、各データフレームに新しい列 (samediff) を作成し、列内でテキストを繰り返して識別しています。 same_auditor$samediff <- "same" diff_auditor$samediff <- "diff"

プロットのデータセットを結合します。 samescore <- same_auditor$Audit_Score diffscore <- diff_auditor$Audit_Score sameDiffcombined <- rbind(diff_auditor,same_auditor)

ggplot(sameDiffcombined, aes(Audit_Score, fill = samediff)) + geom_density(alpha = 0.5)

于 2013-02-06T01:15:51.820 に答える
0

ピーター・エリスの答えはまさに正しいです。同じ軸上の 2 つの異なるサンプルから密度を推定してプロットする方法の「基礎」の例を次に示します。

x <- rnorm(1000, mean=3, sd=2)
y <- rnorm(500, mean=3.5, sd=3)

dx <- density(x)
dy <- density(y)

plot.new()
plot.window(xlim=range(c(dx$x, dy$x)), ylim=range(c(dx$y, dy$y)))
with(dx, lines(x, y))
with(dy, lines(x, y, lty=2))
axis(1)
axis(2)
legend(topright, lty=1:2, c('x', 'y'))
mtext(side=1, line=2, 'Observed values')
mtext(side=2, line=2, 'Estimated probability mass')
title('Smoothed Density Estimates for 2-sample experiment')
于 2013-02-03T22:56:31.743 に答える