我试图用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)
也许这将是你可以借鉴的东西。默认情况下,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)