Advertisement
Guest User

Untitled

a guest
Oct 20th, 2019
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.00 KB | None | 0 0
  1. # Example of regression to the mean
  2.  
  3. set.seed(123)
  4.  
  5. ctrl <- matrix(rnorm(0.5e5, mean = 0, sd = 0.5), ncol = 5)
  6. treat1 <- matrix(rnorm(0.5e5, mean = 0, sd = 0.5), ncol = 5)
  7. treat2 <- matrix(rnorm(0.5e5, mean = 0, sd = 0.5), ncol = 5)
  8.  
  9. # seed 200 differentially expressed genes
  10. diff_genes <- sample(seq.int(nrow(treat1)), 200)
  11. treat1[diff_genes, ] <- treat1[diff_genes, ] + 0.75
  12. treat2[diff_genes, ] <- treat2[diff_genes, ] + 0.75
  13. m <- cbind(ctrl, treat1, treat2)
  14.  
  15. # the mean expression scores are uncorrelated between the groups
  16. panel.cor <- function(x, y, digits = 2, prefix = "", cex.cor, ...)
  17. {
  18. usr <- par("usr"); on.exit(par(usr))
  19. par(usr = c(0, 1, 0, 1))
  20. r <- abs(cor(x, y))
  21. txt <- format(c(r, 0.123456789), digits = digits)[1]
  22. txt <- paste0(prefix, txt)
  23. if (missing(cex.cor)) cex.cor <- 0.8/strwidth(txt)
  24. text(0.5, 0.5, txt, cex = cex.cor * r)
  25. }
  26.  
  27. panel.smooth <- function(x, y, show_points = TRUE, ...) {
  28. smoothScatter(x = x, y = y, ..., nbin = 64,
  29. nrpoints = 0,
  30. add = TRUE, gap = 0.2)
  31. if (show_points == TRUE) {
  32. points(x[diff_genes], y[diff_genes],
  33. col = adjustcolor("darkgreen", 0.2), pch = 19)
  34. }
  35. abline(h = 0, v = 0, lty = 2)
  36. }
  37.  
  38. # fig.width = 5.5, fig.height = 5.5
  39. pairs(
  40. cbind(
  41. rowMeans(m[, 1:5]),
  42. rowMeans(m[, 6:10]),
  43. rowMeans(m[, 11:15])
  44. ),
  45. labels = c("Ctrl", "Treatment1", "Treatment2"),
  46. lower.panel = panel.smooth, upper.panel = panel.cor
  47. )
  48.  
  49.  
  50. # calculating 'treatment effects' compared to THE SAME control group
  51. m1 <- rowMeans(m[, 6:10]) - rowMeans(m[, 1:5])
  52. m2 <- rowMeans(m[, 11:15]) - rowMeans(m[, 1:5])
  53.  
  54. # increases the correlation between the effects
  55. # fig.width = 5.5, fig.height = 5.5
  56. pairs(
  57. cbind(m1[-diff_genes], m2[-diff_genes]),
  58. labels = c("Treament 1 vs Ctrl", "Treament 2 vs Ctrl"),
  59. lower.panel = panel.smooth, upper.panel = panel.cor,
  60. show_points = FALSE
  61. )
  62. title(
  63. main = "Treatment effects*", line = 3
  64. )
  65. title(
  66. sub = "*Differentially expressed genes were excluded", line = 4
  67. )
  68.  
  69. # pick genes based on the first comparision
  70. pvals <- apply(m, 1, function(z) {
  71. t.test(x = z[6:10], y = z[1:5])$p.value
  72. })
  73. picked <- head(order(pvals), n = 100)
  74.  
  75. # these genes show
  76. # - still an effect in the second comparison (because of the shared denominator)
  77. # - smaller effects in the second comparison (because of regression to the mean)
  78. summary(m1[picked])
  79. summary(m2[picked])
  80.  
  81. # fig.width = 5.5, fig.height = 5.5
  82. smoothScatter(m1, m2, xlab = "Treament 1 vs Ctrl",
  83. ylab = "Treament 2 vs Ctrl",
  84. main = "Differentially expressed genes")
  85. points(m1[diff_genes], m2[diff_genes], pch = 21, col = "darkgrey",
  86. bg = adjustcolor("darkgreen", 0.5))
  87. abline(a = 0, b = 1, h = 0, v = 0, lty = 2)
  88.  
  89. # fig.width = 5.5, fig.height = 5.5
  90. smoothScatter(m1, m2, xlab = "Treament 1 vs Ctrl",
  91. ylab = "Treament 2 vs Ctrl",
  92. main = "Genes picked based on Treatment 1 vs Ctrl")
  93. points(m1[picked], m2[picked], pch = 21, col = "darkgrey",
  94. bg = adjustcolor("red", 0.5))
  95. abline(a = 0, b = 1, h = 0, v = 0, lty = 2)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement