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

probplot将带您到达那里。不幸的是,我无法弄清楚如何在该图周围添加置信区间带。

类似地,ggplot的stat_qq()似乎通过转换的x轴显示了类似的信息。似乎geom_smooth()是添加乐队的可能候选者,但我还没有弄清楚。

最后,《 Getting Genetics Done》家伙描述了类似的here.

样本数据以重新创建上面的图:

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)

如果任何人都有基本图形或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

实际上,将这些结果与从先验对象中得到的结果进行比较似乎比较好:
> 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"
>

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

相对:
ggplot(data = df, aes(x = x, y = y)) + geom_point() + geom_abline(intercept = int, slope = slope)

使用R的基本图形可以获得类似的结果
plot(df$x, df$y)
abline(int, slope, col = "red")

最后,我了解到图例的最后两行引用了Anderson-Darling测试的正态性,并且可以使用nortest包进行复制。
> ad.test(x)

    Anderson-Darling normality test

data:  x
A = 0.2303, p-value = 0.7502

最佳答案

也许这将是您可以建立的基础。默认情况下,stat_smooth()使用级别= 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")

10-08 16:00