如何比较R中两个向量的分布?

时间:2015-06-12 04:45:49

标签: python r distribution kernel-density

以下是我的数据集的屏幕截图:

enter image description here

以下是它的内容:想象一下,您在一家快递公司工作,由于某种原因,该套餐无法交付给客户。返回的包数分布根据包的货币价值而变化,包是货币的数据集(Levels)的第一个变量。因此,B列代表公司上个月销售的所有包裹的分布,按包裹的价值分组。最后一列C表示由于某些标准(例如,危险邻域)而未能交付的包的分布。

我想要直观地表明,这个特定标准非常重要,它可以改变数据的分布。我使用Excel从原始数据中计算这些百分比,因为我不允许在工作中安装R.

我通过做一些数据争论完成了以下情节,但我想如果我知道如何可以做得更好:

enter image description here

编辑:我被告知要发布数据集的dput版本:

structure(list(Levels = structure(c(6L, 11L, 12L, 13L, 1L, 2L, 
3L, 4L, 5L, 7L, 8L, 9L, 10L), .Label = c("Less than $1000", "Less than $1200", 
"Less than $1400", "Less than $1600", "Less than $1800", "Less than $200", 
"Less than $2000", "Less than $2200", "Less than $2400", "Less than $2600", 
"Less than $400", "Less than $600", "Less than $800"), class = "factor"), 
    X.ofTotal = c(0.3802, 0.2475, 0.1218, 0.0664, 0.0409, 0.0247, 
    0.0178, 0.016, 0.0099, 0.0109, 0.0061, 0.0063, 0.0063), X..ofTotalWithSomeCriteria = c(0.6087, 
    0.1957, 0.0652, 0.0435, 0, 0.0217, 0, 0, 0.0435, 0.0217, 
    0, 0, 0)), .Names = c("Levels", "X.ofTotal", "X..ofTotalWithSomeCriteria"
), class = "data.frame", row.names = c(NA, -13L))
> 

1 个答案:

答案 0 :(得分:2)

我会绘制经验累积分布函数。这是有道理的,因为这两个函数的比较也是Kolmogorov-Smirnov检验两个分布差异显着性的基础。

在R中绘制这些函数至少有两个选项:

plot(ecdf(data$X.ofTotal),col="green",xlim=c(0,1),verticals = TRUE,main = "")
par(new=TRUE)
plot(ecdf(data$X..ofTotalWithSomeCriteria ),col="red",xlim=c(0,1),verticals = TRUE,main = "")

require( Hmisc )
l <- length(data$X..ofTotalWithSomeCriteria )
dataset <- c(rep("Total",l), rep("Criteria", l))  
Ecdf(c(data$X.ofTotal, data$X..ofTotalWithSomeCriteria ), group=dataset, col=c('blue', 'red'))