程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何在 R 中生成重叠的 QQ 图?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如何在 R 中生成重叠的 QQ 图??

开发过程中遇到如何在 R 中生成重叠的 QQ 图?的问题如何解决?下面主要结合日常开发的经验,给出你关于如何在 R 中生成重叠的 QQ 图?的解决方法建议,希望对你解决如何在 R 中生成重叠的 QQ 图?有所启发或帮助;

我想根据 GWAS 结果制作一个重叠的 QQ 图,类似于附图。我已经运行了两个 GWAS 分析,并希望生成一个图形,其中来自两个 GWAS 的 QQ 图相互重叠。为此,我正在使用 R 包“qqman”。

谁能告诉我如何在 R 中做到这一点?

谢谢。

示例图

如何在 R 中生成重叠的 QQ 图?

解决方法

这有效

(abd = data.frame(a = runif(100,3),b = runif(100,346,455),d = runif(100,3952,4903)) %>% 
  ggplot() + 
  geom_qq(aes(sample = a,color = "a")) +
  geom_qq(aes(sample = b,color = "b")) + 
  geom_qq(aes(sample = d,color = "d")) +
  theme_minimal())

我不确定您的目标究竟是什么,但数据很可能会重叠并隐藏重要信息。也许您真正需要的是 qq 图的双变量或多变量版本?如果是这种情况,使用马哈拉诺比斯距离的卡方 qq 图可能是更好的选择。

此图将显示带有 MVN::mvn() 为其设置的参数

abd = data.frame(a = runif(100,4903))

MVN::mvn(abd,multivariatePlot = "qq",multivariateOutlierMethod = "quan")

您可以通过这种方式手动创建卡方 qq 图:

(cvAbd = cov(and))            # covariance matrix

(dif = scale(abd,scale = F)) # scaling 

# solve() used in next call calculates the inverse matrix 
(d = diag(dif %*% 
   solve(cvAbd) %*%           # matrix multiplication
   t(dif)))   

(r = rank(d))                 # ranking 

n = dim(abd)[1]  # number of observations
p = dim(abd)[2]  # number of variables

(ch <- qchisq((r - 0.5)/n,p))    # determine chi-square quantiles

ggplot(data = data.frame(d = d,ch = ch),aes(d,ch)) + 
  geom_point() + 
  ggtitle("Chi-Square Q-Q Plot") + 
  xlab("Squared Mahalanobis Distance") +
  ylab("Chi-Square Quantile") + 
  theme_minimal()

你正在寻找不同的东西——试试这个 您可以用您的数据替换 runif(10000,.5,1)

-oe 用于同一向量(两者中的数据相同)

-o2e2 是第二个向量或第二个模型(两者中的数据相同) 这使用情节...

# first model
o = -log10(sort(runif(10000,1),decreasing = FALSE))
e = -log10(ppoints(length(runif(10000,1))))

# second model
o2 = -log10(sort(runif(10000,decreasing = FALSE))
e2 = -log10(ppoints(length(runif(10000,1))))

plotly::plot_ly(x = ~e,y = ~o,name = "p1",type = "scatter",mode = "markers")  %>% 
  add_trace(x = ~e2,y = ~o2,name = "p2") %>% 
  add_trace(x = c(0,max(e,e2)),y = c(0,mode="lines",name = "Log normal") %>% 
  layout(xaxis = list(title = 'Expected -log[10](<i>p</i>)'),yaxis = list(title = 'Observed -log[10](<i>p</i>)'))

您请求了 ggplot2 版本 -

ggplot(data.frame(o = o,e = e,o2 = o2,e2 = e2),aes(e,o,color = "First Model")) + 
  geom_point() +
  geom_point(aes(o2,e2,color = "Second Model")) +
  geom_abline(intercept = 0,slope = 1,color = "darkred") +
  scale_color_discrete("") +
  xlab(expression(paste('Expected -log[10](',italic('p'),')'))) +
  ylab(expression(paste('Observed -log[10](',')'))) +
  theme_minimal()
,

您可以使用 R 包 CMplot 在 R 中生成重叠的 QQ 图。

library(CMplot)

data(pig60K) 
pig60K$trait1[sample(1:nrow(pig60K),round(nrow(pig60K)*0.80))] <- NA
pig60K$trait2[sample(1:nrow(pig60K),round(nrow(pig60K)*0.25))] <- NA
CMplot(pig60K,plot.type="q",col=c("dodgerblue1","olivedrab3","darkgoldenrod1"),threshold=1e-6,ylab.pos=2,signal.pch=c(19,6,4),signal.cex=1.2,signal.col="red",conf.int=TRUE,box=FALSE,multracks=
        TRUE,cex.axis=2,file="jpg",memo="",dpi=300,file.output=TRUE,verbose=TRUE,ylim=c(0,8),width=5,height=5)

如何在 R 中生成重叠的 QQ 图?

大佬总结

以上是大佬教程为你收集整理的如何在 R 中生成重叠的 QQ 图?全部内容,希望文章能够帮你解决如何在 R 中生成重叠的 QQ 图?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: