在ggplot2中可视化Kolmogorov-Smirnov统计

Joh*_*hnK 2 statistics r ggplot2

Kolmogorov-Smirnov统计量定义为经验值与假设的累积分布函数之间的最大距离。我认为与其查看数字,不如使用图形来定位最大差异。

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

p1 <-qplot(rnorm(30),stat =“ ecdf”,geom =“ step”)

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

谢谢。

MrF*_*ick 6

如果您想使用ggplot,请做

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

您可以根据需要找到最大距离

ed <- ecdf(dd$x)
maxdiffidx <- which.max(abs(ed(dd$x)-pnorm(dd$x)))
maxdiffat <- dd$x[maxdiffidx]
Run Code Online (Sandbox Code Playgroud)

并添加到情节

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

在此处输入图片说明