【问题标题】:plot the tails of distributions绘制分布的尾部
【发布时间】:2018-10-12 17:26:59
【问题描述】:

我有两个数据集 var1 和 var2。我想比较这两个分布。

libary(ggplot2)
library(reshape)


set.seed(101)
var1 = rnorm(1000, 0.5)
var2 = rnorm(100000,0.5)
combine = melt(data.frame("var1" = var1,"var2"= var2))
ggplot(data = combine) + geom_density(aes(x = value, color = variable), alpha = 0.2)

这导致分布的密度图看起来非常相似(除了中间部分的少量蠕动),但是,我想显示分布的尾部不一样。变量 2 的价差比变量 2 大。除了价差/分位数之外,还有哪些统计数据可以进行比较以显示差异?

是否有人知道任何技术、统计测试或可视化技术,尤其是显示分布尾部的差异(较高的尾部,较高的极端)。

【问题讨论】:

标签: r ggplot2 distribution probability-density


【解决方案1】:

您可以通过绘制每个样本的分位数来证明尾部实际上是不同的(参见下面的示例)。

就检验样本是否来自正态分布而言,您可以使用 Anderson-Darling 检验来检验是否偏离正态:

library(goftest)

ad.test(var1, "pnorm", mean=0.5)
ad.test(var2, "pnorm", mean=0.5)

您还可以使用 Anscombe 检验来检验峰度的差异(分布的峰值程度),以查看尾部是否在统计上显着不同:

library(moments)

anscombe.test(var1)
anscombe.test(var2)

这些测试都没有表明统计上显着偏离正态性,这是有道理的,因为两个样本都相对较大,而且它们实际上来自相同的分布。

您可能会发现这些链接对于测试分布尾部的差异很有用:herehere

在可视化分布方面,绘制分位数可能更容易辨别尾部的差异:

library(ggpubr)

prob = seq(0,1,0.0001)
dat = combine %>% group_by(variable) %>% 
  summarise(value = list(quantile(value, probs=prob)),
            Percentile = list(prob*100))

p = dat %>% unnest %>% 
  ggplot(aes(Percentile, value, colour=variable)) + 
  geom_line() +
  theme_bw()

ggarrange(p + scale_x_continuous(limits=c(0,10), breaks=0:100),
          p + scale_x_continuous(limits=c(90,100), breaks=0:100), 
          ncol=2, common.legend=TRUE)

经验累积密度分布是另一种选择:

ggplot(combine, aes(value, colour=variable)) + 
  stat_ecdf() +
  theme_bw()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-16
    • 2021-09-05
    • 2013-06-10
    相关资源
    最近更新 更多