在 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。
这是我第一次遇到我在 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。