0

我必须比较 R 中两个样本的密度函数。令人惊讶的是,无论我使用什么函数 plot()、lines() 或 ggplot,两个样本中的一个要么不出现,要么两个区域不同且不能等于一个. 我希望两个区域在同一图表上相等,以便轻松确定样本的 pdf 大于另一个的 pdf 的横坐标值集。我该如何解决?非常感谢您的帮助。

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

彼得埃利斯的回答完全正确。这是一个“基础”示例,说明如何估计和绘制同一轴上两个不同样本的密度:

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 回答
0

在此处输入图像描述这就是我在一个图中覆盖两个数据集列的方式:

在这里,我在每个数据框中创建一个新列(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 回答