在 R 中绘制 y 轴缩放为正态分布的累积分布

Plotting cumulative distributions with y-axis scaled to normal distribution in R

这是我第一次遇到我在 Stack Overflow 上找不到的 R 问题 - 如果我找不到任何东西的原因是我正在做的事情的特定术语,请原谅我寻找我不知道的(有吗?)。

我想将数据显示为累积频率。由于我的重点更多地放在分布的边缘,因此将 y 轴缩放为正态分布很有帮助。结果应该是这个样子:

我读过分位数-分位数图,但老实说,如果我想保留 X 轴,我不知道如何应用它们。

我尝试了 base 图形和 ggplot2,但无法弄清楚。因此,我当前的解决方案是

plot(ecdf(trees$Volume))

ggplot(data=trees, aes(Volume)) + stat_ecdf()

我认为您正在寻找 scales 包和 probability_trans() 函数:

不变换 y 尺度:

require(ggplot2)

ggplot(data = trees,
       aes(Volume)) + 
    stat_ecdf()

y轴变换:

ggplot(data = trees,
       aes(Volume)) + 
    stat_ecdf() + 
    scale_y_continuous(trans = scales::probability_trans("norm"))

您可以在 ?probability_trans 的文档中阅读更多相关信息。 probability_trans() 函数采用标准 R 概率名称来缩放轴。 如果您需要完全自定义的东西,您还可以使用 trans_new() 创建一个新的转换。

Peter Filzmoser 的 StatDA 包中的 qpplot.das 函数可能是适合您的“base R”方式。

library(StatDA) 
qpplot.das(trees$Volume, qdist = qnorm, xlab = "Volume", line = FALSE) 

output

StatDA 包用于 Reimann、Filzmoser、Garret 和 Dutter 所著Statistical Data Analysis Explained一书中的所有计算和图形。全部R scripts are online, also examples for the QP plots