2014-12-03 48 views
1

Kolmogorov-Smirnov统计量被定义为经验和假设累积分布函数之间的最大距离。我认为最好是使用图来定位最大差异,而不是看数字。可视化ggplot2中的Kolmogorov-Smirnov统计量

我知道如何绘制经验分布函数

P1 < -qplot(RNORM(30),STAT = “ECDF”,GEOM = “步”)

但你能不能请告诉我如何在同一图上添加理论分布的累积分布函数?对我而言,理论分布是标准正态分布,但我对每个分布函数的推广感兴趣。

谢谢。

+0

只需使用'pnorm':'x < - seq(-3,3,length = 100); plot(x,pnorm(x))'。对于其他发行版,使用例如'pbeta','pcauchy'等 – Gregor 2014-12-03 22:14:36

+0

@Gregor我看到了,但是如何在现有的ggplot2图上添加该图? – JohnK 2014-12-03 22:16:29

回答

4

如果你想使用ggplot,只是做

set.seed(15) 
dd <- data.frame(x=rnorm(30)) 
ggplot(dd, aes(x)) + 
    stat_ecdf() + 
    stat_function(fun = pnorm, colour = "red") 

你可以找到的最大距离,如果你有

ed <- ecdf(dd$x) 
maxdiffidx <- which.max(abs(ed(dd$x)-pnorm(dd$x))) 
maxdiffat <- dd$x[maxdiffidx] 

喜欢并添加到情节与

ggplot(dd, aes(x)) + 
    stat_ecdf() + 
    stat_function(fun = pnorm, colour = "red") + 
    geom_vline(x=maxdiffat, lty=2) 

enter image description here

+0

这就是我正在寻找的,谢谢。有没有办法限制两个函数之间的垂直线? – JohnK 2014-12-03 22:20:39

+0

不是'vline',你可以画一个'segment'来给出明确的开始/结束点。 – MrFlick 2014-12-03 22:21:23

+0

好的。但是另一个分布函数呢,比方说参数2和3的伽马分布函数呢? – JohnK 2014-12-03 22:23:54