figure_6_S1.Rmd 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
  1. ---
  2. title: "Spacek et al., 2021, Figure 6-Supplement 1"
  3. output: pdf_document
  4. ---
  5. ```{r setup, include=FALSE}
  6. knitr::opts_chunk$set(echo = TRUE)
  7. library(arm)
  8. library(lmerTest)
  9. library(tidyverse)
  10. library(data.table)
  11. source('get_data.R')
  12. ```
  13. ```{r read_data, include=FALSE}
  14. tib = get_data("../csv/fig6.csv")
  15. tib <- tib %>% filter(stimtype == "grt") %>% select(mid, sid, eid, uid, mseu, mi, meanrate, meanburstratio)
  16. ```
  17. ```{r tidy_for_a1, include = FALSE}
  18. # Select relevant columns
  19. tb <- tib %>% filter(mi == "suppressionrmi" | mi == "feedbackrmi")
  20. # Turn long format into wide format, using data.tables and dcast:
  21. foo = dcast(setDT(tb), mid + sid + eid + uid + mseu ~ mi, value.var = "meanrate")
  22. tbw = as_tibble(foo)
  23. ```
  24. # Figure 6-S1a$_1$
  25. ## Comparing RMI during suppression against 0
  26. ```{r, fit_model_a1_1}
  27. # Fixed effect intercept only,
  28. # random intercept for neurons,
  29. # random intercept for experiments, nested within series
  30. lmer.a1.1 = lmer(suppressionrmi ~ 1 + (1 | uid) + (1 | sid/eid),
  31. data = tbw %>% drop_na(suppressionrmi))
  32. display(lmer.a1.1)
  33. ```
  34. ## Mean firing rate RMI
  35. Suppression: RMI = `r format(fixef(lmer.a1.1)[1], digits=2, nsmall=2)` $\pm$ `r format(2 * se.fixef(lmer.a1.1)[1], digits=2, nsmall=2)` \newline
  36. n = `r nrow(tbw %>% drop_na(suppressionrmi) %>% count(uid))` neurons from `r nrow(tbw %>% drop_na(suppressionrmi) %>% count(mid))` mice
  37. \newpage
  38. # Figure 6-S1a$_2$
  39. ## Comparing RMI during suppression against 0
  40. ```{r tidy_for_a2, include = FALSE}
  41. # Turn long format into wide format, using data.tables and dcast:
  42. foo = dcast(setDT(tb), mid + sid + eid + uid + mseu ~ mi, value.var = "meanburstratio")
  43. tbw = as_tibble(foo)
  44. ```
  45. ```{r fit_model_a2_1}
  46. # LMM gives singular fits, even with a single random intercept for neurons.
  47. # We do ordinary regression instead:
  48. lm.a2.1 = lm(suppressionrmi ~ 1, data = tbw %>% drop_na(suppressionrmi))
  49. display(lm.a2.1)
  50. ```
  51. ## Mean burst ratio RMI
  52. Suppression: RMI = `r format(summary(lm.a2.1)$coefficients[1], digits=2, nsmall=2)` $\pm$ `r format(2 * summary(lm.a2.1)$coefficients[2], digits=1, nsmall=1)` \newline
  53. n = `r nrow(tbw %>% drop_na(suppressionrmi) %>% count(uid))` neurons from `r nrow(tbw %>% drop_na(suppressionrmi) %>% count(mid))` mice
  54. \newpage
  55. # Figure 6-S1b$_1$
  56. ## Slope of regression line
  57. ```{r tidy_for_b1_1, include = FALSE}
  58. tb <- tib %>% filter(mi == "sitfmi" | mi == "runfmi")
  59. # Turn long format into wide format, using data.tables and dcast:
  60. foo = dcast(setDT(tb), mid + sid + eid + uid + mseu ~ mi, value.var = "meanrate")
  61. tbw = as_tibble(foo)
  62. ```
  63. ```{r fit_model_b1_1}
  64. # Random intercept for neurons,
  65. # random intercept for experiments
  66. lmer.b1.1 = lmer(runfmi ~ sitfmi + (1 | uid) + (1 | eid),
  67. data = tbw %>% drop_na(runfmi, sitfmi))
  68. display(lmer.b1.1)
  69. anova(lmer.b1.1)
  70. ```
  71. ``` {r store_coefficients_b1_1, include=FALSE}
  72. coef_df = data.frame("intercept" = fixef(lmer.b1.1)[1], "slope" = fixef(lmer.b1.1)[2], row.names = "")
  73. write_csv(coef_df, "_stats/figure_6_S1b1_coefs.csv")
  74. ```
  75. Slope of `r format(fixef(lmer.b1.1)[2], digits=2, nsmall=2)` $\pm$ `r format(2 * se.fixef(lmer.b1.1)[2], digits=2, nsmall=2)` \newline
  76. n = `r nrow(tbw %>% drop_na(runfmi, sitfmi) %>% count(uid))` neurons from `r nrow(tbw %>% drop_na(runfmi, sitfmi) %>% count(mid))` mice
  77. \newpage
  78. # Figure 6-S1b$_2$
  79. ## Slope of regression line
  80. ```{r tidy_for_b2_1, include = FALSE}
  81. tb <- tib %>% filter(mi == "sitfmi" | mi == "runfmi")
  82. # Turn long format into wide format, using data.tables and dcast:
  83. foo = dcast(setDT(tb), mid + sid + eid + uid + mseu ~ mi, value.var = "meanburstratio")
  84. tbw = as_tibble(foo)
  85. # Remove NaNs
  86. tbw <- tbw %>% filter(sitfmi != "Na" & runfmi != "Na")
  87. ```
  88. ```{r fit_model_b2_1}
  89. # Random intercept for neurons,
  90. # random intercept for experiments, nested in series
  91. lmer.b2.1 = lmer(runfmi ~ sitfmi + (1 | uid) + (1 | sid/eid),
  92. data = tbw %>% drop_na(runfmi, sitfmi))
  93. display(lmer.b2.1)
  94. anova(lmer.b2.1)
  95. ```
  96. ```{r store_coefficients_b2_1, include=FALSE}
  97. # store results in file
  98. coef_df = data.frame("intercept" = fixef(lmer.b2.1)[1], "slope" = fixef(lmer.b2.1)[2], row.names = "")
  99. write_csv(coef_df, "_stats/figure_6_S1b2_coefs.csv")
  100. ```
  101. Slope of `r format(fixef(lmer.b2.1)[2], digits=2, nsmall=2)` $\pm$ `r format(2 * se.fixef(lmer.b2.1)[2], digits=2, nsmall=2)` \newline
  102. n = `r nrow(tbw %>% drop_na(runfmi, sitfmi) %>% count(uid))` neurons from `r nrow(tbw %>% drop_na(runfmi, sitfmi) %>% count(mid))` mice
  103. \newpage
  104. # Figure 6-S1c$_1$
  105. ## Slope of regression line
  106. ```{r tidy_for_c1_1, include = FALSE}
  107. tb <- tib %>% filter(mi == "rmi" | mi == "fmi")
  108. # Turn long format into wide format, using data.tables and dcast:
  109. foo = dcast(setDT(tb), mid + sid + eid + uid + mseu ~ mi, value.var = "meanrate")
  110. tbw = as_tibble(foo)
  111. ```
  112. ```{r fit_model_c1_1}
  113. # Random intercept for neurons,
  114. # random intercept for experiments
  115. lmer.c1.1 = lmer(fmi ~ rmi + (1 | uid) + (1 | eid),
  116. data = tbw %>% drop_na(fmi, rmi))
  117. display(lmer.c1.1)
  118. anova(lmer.c1.1)
  119. ```
  120. ```{r, store_coefficients_c1_1, include=FALSE}
  121. # store results in file
  122. coef_df = data.frame("intercept" = fixef(lmer.c1.1)[1], "slope" = fixef(lmer.c1.1)[2], row.names = "")
  123. write_csv(coef_df, "_stats/figure_6_S1c1_coefs.csv")
  124. ```
  125. Slope of `r format(fixef(lmer.c1.1)[2], digits=2, nsmall=2)` $\pm$ `r format(2 * se.fixef(lmer.c1.1)[2], digits=2, nsmall=2)` \newline
  126. n = `r nrow(tbw %>% drop_na(fmi, rmi) %>% count(uid))` neurons from `r nrow(tbw %>% drop_na(fmi, rmi) %>% count(mid))` mice
  127. \newpage
  128. # Figure 6-S1c$_2$
  129. ## Slope of regression line
  130. ```{r, tidy_for_c2_1, include=FALSE}
  131. tb <- tib %>% filter(mi == "rmi" | mi == "fmi")
  132. # Turn long format into wide format, using data.tables and dcast:
  133. foo = dcast(setDT(tb), mid + sid + eid + uid + mseu ~ mi, value.var = "meanburstratio")
  134. tbw = as_tibble(foo)
  135. ```
  136. ```{r fit_model_c2_1}
  137. # Random intercept for neurons,
  138. # random intercept for experiments, nested in series
  139. lmer.c2.1 = lmer(fmi ~ rmi + (1 | uid) + (1 | sid/eid),
  140. data = tbw %>% drop_na(fmi, rmi))
  141. display(lmer.c2.1)
  142. anova(lmer.c2.1)
  143. ```
  144. ```{r, store_coefficients_c2_1, include=FALSE}
  145. coef_df = data.frame("intercept" = fixef(lmer.c2.1)[1], "slope" = fixef(lmer.c2.1)[2], row.names = "")
  146. write_csv(coef_df, "_stats/figure_6_S1c2_coefs.csv")
  147. ```
  148. Slope of `r format(fixef(lmer.c2.1)[2], digits=2, nsmall=2)` $\pm$ `r format(2 * se.fixef(lmer.c2.1)[2], digits=2, nsmall=2)` \newline
  149. n = `r nrow(tbw %>% drop_na(fmi, rmi) %>% count(uid))` neurons from `r nrow(tbw %>% drop_na(fmi, rmi) %>% count(mid))` mice