重新创建minitab正态概率图

Cha*_*ase 6 r ggplot2

我试图用R.重新创建下面的图.Minitab将其描述为正态概率图.

替代文字

probplot让你最那里的方式.不幸的是,我无法弄清楚如何在这个图周围添加置信区间带.

同样,ggplot的stat_qq()似乎与转换的x轴呈现相似的信息.看起来这geom_smooth()可能是增加乐队的候选者,但我还没弄明白.

最后,Getting Genetics Done的人在这里描述了类似的东西.

示例数据重新创建上图:

x <- c(40.2, 43.1, 45.5, 44.5, 39.5, 38.5, 40.2, 41.0, 41.6, 43.1, 44.9, 42.8)
Run Code Online (Sandbox Code Playgroud)

如果有人有基本图形或ggplot的解决方案,我会很感激!

编辑

在查看细节之后probplot,我已经确定这是如何在图表上生成拟合线:

> xl <- quantile(x, c(0.25, 0.75))
> yl <- qnorm(c(0.25, 0.75))
> slope <- diff(yl)/diff(xl)
> int <- yl[1] - slope * xl[1]
> slope
   75% 
0.4151 
> int
   75% 
-17.36 
Run Code Online (Sandbox Code Playgroud)

实际上,将这些结果与您从probplot对象中得到的结果进行比较似乎比较得很好:

> check <- probplot(x)
> str(check)
List of 3
 $ qdist:function (p)  
 $ int  : Named num -17.4
  ..- attr(*, "names")= chr "75%"
 $ slope: Named num 0.415
  ..- attr(*, "names")= chr "75%"
 - attr(*, "class")= chr "probplot"
> 
Run Code Online (Sandbox Code Playgroud)

但是,将此信息合并到ggplot2或基本图形中不会产生相同的结果.

probplot(x)
Run Code Online (Sandbox Code Playgroud)

替代文字

与:

ggplot(data = df, aes(x = x, y = y)) + geom_point() + geom_abline(intercept = int, slope = slope)
Run Code Online (Sandbox Code Playgroud)

替代文字

我使用R的基本图形获得了类似的结果

plot(df$x, df$y)
abline(int, slope, col = "red")
Run Code Online (Sandbox Code Playgroud)

最后,我了解到图例的最后两行是指Anderson-Darling的常态测试,可以使用nortest包重现.

> ad.test(x)

    Anderson-Darling normality test

data:  x 
A = 0.2303, p-value = 0.7502
Run Code Online (Sandbox Code Playgroud)

Bra*_*sen 2

也许这将是你可以借鉴的东西。默认情况下,stat_smooth() 使用 level=0.95。

df <- data.frame(sort(x), ppoints(x))
colnames(df) <- c("x","y")

ggplot(df, aes(x,y)) + 
geom_point() + 
stat_smooth() + 
scale_y_continuous(limits=c(0,1),breaks=seq(from=0.05,to=1,by=0.05), formatter="percent")
Run Code Online (Sandbox Code Playgroud)