如何在ggpubr中模拟QQ图

js81xvg6  于 2023-02-01  发布在  其他
关注(0)|答案(1)|浏览(217)

这里有很多关于使用QQ图的线程,但我正在尝试找出如何手工计算一个,在这个过程中,我想模拟ggpubr中使用的一个,因为它看起来比base R版本更好。到目前为止,我至少看起来用这个方法在base R中生成了一个QQ图:

#### Load Libraries ####
library(tidyverse)
library(ggpubr)

#### Organize Data ####
x <- sort(iris$Petal.Length)
rank <- c(1:150)
perc.scale <- scale(rank)
df <- data.frame(x,
                 rank,
                 perc.scale)

#### Plot in Base R ####
plot(perc.scale,
     x,
     xlab = "Theoretical Quantiles",
     ylab = "Sample Quantiles",
     main = "Normal Q-Q Plot")

结果大多和基R版差不多,但QQ线我还没搞清楚。

类似地,我可以对我的数据使用ggqqplot(x)来得到:

但是当我尝试用手工计算的数据在ggplot中重现它时:

df %>% 
  ggplot(aes(x=perc.scale,
             y=x))+
  geom_point()+
  geom_smooth(method = "lm",
              color = "black",
              se = F,
              linewidth = .5)+
  theme_pubr()+
  labs(x="Theoretical",
       y="Sample")

它看起来还是完全不一样:

**我的主要问题是:1)如何获得正确的回归线,2)如何显示标准误差区域?**我也不确定为什么ggplot版本与ggpubr版本相比看起来旋转了,但现在这并不重要。

gmol1639

gmol16391#

你可以使用stat_qq_line来得到ggplot中的qq图,如下所示:

#### Load Libraries ####
library(tidyverse)
library(ggpubr)

#### Organize Data ####
x <- sort(iris$Petal.Length)
rank <- c(1:150)
perc.scale <- scale(rank)
df <- data.frame(x,
                 rank,
                 perc.scale)

ggplot(df, aes(sample = x)) +
  stat_qq() +
  stat_qq_line() +
  theme_pubr()+
  labs(x="Theoretical",
       y="Sample")

创建于2023年1月29日,使用reprex v2.0.2
您可以使用qqplotrstat_qq_band来添加置信区间,如下所示:

#### Load Libraries ####
library(tidyverse)
library(ggpubr)
library(qqplotr)

ggplot(df, aes(sample = x)) +
  stat_qq_band() +
  stat_qq_point() +
  stat_qq_line() +
  theme_pubr()+
  labs(x="Theoretical",
       y="Sample")

创建于2023年1月29日,使用reprex v2.0.2

相关问题